iOS - dismissModalViewController无法正常工作

时间:2012-08-14 09:32:06

标签: iphone ios uiviewcontroller uiwebview uiwebviewdelegate

点击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];
}

4 个答案:

答案 0 :(得分:0)

您没有在代码中使用presentModalViewController。您只是将webView添加为子视图。

答案 1 :(得分:0)

您将UIWebViewDelegate中的WebViewController分配给WebViewController的实例。因此,MainViewController没有收听UIWebView委托方法。

但是,您没有使用WebViewController方法展示presentModalViewController

closeBtnTapped中调用dismissModalViewController方法并将其发送至self

答案 2 :(得分:0)

而不是[self.view addSubview:self.webViewController.view]; 使用[self presentModalViewCOntroller:webViewController animated:yes];

然后dismissModalViewControllerAnimated将起作用。

答案 3 :(得分:0)

让我说清楚一件事。因为ashokbabuy是对的。 无论何时在代码中使用presentModalViewController,只需记住您在当前控制器中呈现的Viewcontroller,这是一个很好的做法,可以在该呈现的控制器中使用。

我的意思是你在MainController中展示WebViewcontroller。在WebViewController closebuttontap事件中解除它是一个很好的做法。

所以它只是简单的代码如下

[self dismissModalViewControllerAnimated:YES];