iOS - 关闭ModalView控制器不起作用



点击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

最新更新