3

我有一个 UITabBarController ,其中一个栏项目是一个导航控制器,上面有一些按钮。其中一个按钮会打开一个 urlRequest 并将其加载到 UIWebView 中。

NSURL * url = [NSURL URLWithString:myUrl];
NSURLRequest * urlRequest = [NSURLRequest requestWithURL:url];
UIWebView * web = [tView wView];
[web setScalesPageToFit:YES];
[web loadHTMLString:@"Loading" baseURL:nil];
[web loadRequest:urlRequest];
[self.navigationController pushViewController:tView animated:YES];

出于某种原因,当我第一次单击该按钮时,什么也没有发生。

我使用 UIWebViewDelegate 协议来调试它,如下所示:

- (void)webViewDidStartLoad:(UIWebView *)webView
{
    NSLog(@"webViewDidStartLoad");

}

当我单击该按钮时,没有任何反应,并且我没有看到 NSLog 消息。当我回击并再次单击按钮时,我看到了调试并且一切正常。

知道是什么原因造成的吗?

PS如果我把: [self.navigationController pushViewController:tView animated:YES];

在 webViewDidStarLoad 方法中,应用程序只是挂起,因为它没有在第一次单击时加载它。

4

1 回答 1

2

您需要确保已加载 tView 的视图。当一个 viewController 被实例化时,它的视图(以及它所有的 IBOutlets)都是 nil,并保持这种状态直到视图被加载。

您有两个选择:将加载内容移到 tView 的 -viewDidLoad 方法中,或者在调用 [tView wView] 之前强制加载视图,例如调用 [tView view](这将强制加载 XIB 文件,并且所有要连接的插座。

于 2009-11-19T18:31:54.893 回答