UIWebView未显示/加载请求

时间:2011-03-11 10:03:26

标签: iphone delegates uiwebview request

大家早上好,

我有一个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不会加载请求。

如果有人可以查看提供的代码,那就太好了。

祝你今天愉快, →

1 个答案:

答案 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。


但我只是在猜测。