点击ShowWebsiteButton
MainViewController
会在WebViewController
上显示一个网站。点击CloseWebViewButton
WebViewController
应该关闭WebViewController
并再次向我显示MainViewController
。注意:MainViewController
成功打开WebViewController
并且网站加载,我只是无法返回MainViewController
。
MainViewController.h
@interface MainViewController : UIViewController <UIWebViewDelegate>
@property (strong, nonatomic) WebViewController *webViewController;
MainViewController.m
- (IBAction)showWebsiteButton:(id)sender {
NSString *fullURL = @"http://www.apple.com"
self.webViewController.delegate = self;
self.webViewController.websiteName = fullURL;
self.webViewController.serviceName = @"Apple";
[self.view addSubview:self.webViewController.view];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[self dismissModalViewControllerAnimated:YES];
}
WebViewController.h
@property id <UIWebViewDelegate>delegate;
WebViewController.m
- (IBAction)closeBtnTapped:(id)sender {
[self.delegate webViewDidFinishLoad:self.webView];
}
你没有在代码中使用presentModalViewController。您只是将 Web 视图添加为子视图。
让我澄清一件事。因为阿索克巴买是对的。每当您在代码中使用 presentModalViewController 时,请记住您在当前控制器中呈现的视图控制器,在该呈现的控制器中关闭是一种很好的做法。
我的意思是,如果你在主控制器中展示WebViewcontroller。在 WebViewController 关闭按钮点击事件中关闭它是一个很好的做法。
所以它只是简单的代码,如下所示
[self dismissModalViewControllerAnimated:YES];
而不是[self.view addSubview:self.webViewController.view];
使用[self presentModalViewCOntroller:webViewController animated:yes];
然后dismissModalViewControllerAnimated
将起作用。
将WebViewController
中的UIWebViewDelegate
分配给WebViewController
的实例。因此,您的MainViewController
不是在侦听UIWebView
委托方法。
但是,您没有使用presentModalViewController
方法展示您的WebViewController
。
在closeBtnTapped
只需调用 dismissModalViewController
方法并将其发送到 self