大家早上好,
我有一个RSS阅读器,当单击tableView中的一个feed时,它会打开一个Detail视图控制器。在DetailController的自定义setFeed()方法中,从这样的items数组加载feed的HTML:
[self.itemContent loadHTMLString:[NSString stringWithFormat:@"%@"[item objectForKey:@"content"]] baseURL:nil];
HTML加载没有任何问题。如果单击其中的任何链接,则新请求将加载到同一UIWebView中。问题是我想在单击itemContent中的链接时在另一个UIWebView中显示该网页。
所以,我所做的就是宣布
itemContent.delegate = self
并在委托类(self)中定义以下方法:
-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {if (navigationType == UIWebViewNavigationTypeLinkClicked) {
NSLog(@"Opening Outside link!!!\n");
BrowserViewController *browserViewController = [[[BrowserViewController alloc] init] autorelease];
//following line doesn't change anything in the result
//browserViewController.webView.delegate = self;
[browserViewController.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]];
[self.navigationController pushViewController:browserViewController animated:YES];
return NO;
}
return YES;
}
此方法绝对可以识别在 itemContent 中首次加载HTML与在 itemContent webView中的链接上执行的点击之间。 NavigationController推送到下一个View但没有加载任何内容。我的意思是我在BrowserViewController的NIB文件中将一个标签放在UIWebView旁边,以确保通过查看标签来加载NIB;和它的表现。另外,我在NIB文件中定义了一个与UIWebView连接的Outlet webView,所以这应该不是问题。
如果不清楚什么似乎是问题:当点击链接时,browserViewController会显示标签,但webView不会加载请求。
如果有人可以查看提供的代码,那就太好了。
祝你今天愉快, →
答案 0 :(得分:5)
当您在loadRequest调用前放置NSLog(@"WebView: %@", browserViewController.webView);
时,您将看到webView为零。
目前无法使用webView。它不是在init方法中创建的。
我建议在BrowserViewController中添加NSURL *url;
属性。然后,您可以使用[browserViewController.webView loadRequest:...
代替browserViewCOntroller.url = request.URL;
。或者您可以直接保存NSURLRequest。
在BrowserViewController的viewDidLoad
方法中,您可以告诉webview加载URL或URLRequest。
但我只是在猜测。