我有一个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消息。 当我回击并再次单击该按钮时,我看到调试,一切正常,只需查找。
知道造成这种情况的原因是什么?
如果我把:
[self.navigationController pushViewController:tView animated:YES];
在webViewDidStarLoad方法中,应用程序只是挂起,因为它没有在第一次点击时加载它。
答案 0 :(得分:2)
您需要确保已加载tView的视图。当viewController被实例化时,它的视图(以及它的所有IBOutlets)都是nil,并且在加载视图之前保持这种状态。
你有两个选择:将你的加载内容移动到tView的-viewDidLoad方法中,或者在调用[tView wView]之前强制加载视图,例如调用[tView view](这将强制加载XIB文件) ,以及所有连接的插座。