【问题标题】:UIWebView not showing/loading requestUIWebView 不显示/加载请求
【发布时间】:2011-03-11 10:03:26
【问题描述】:

大家早上好,

我有一个 RSS 阅读器,当单击 tableView 中的提要时,它会打开一个详细视图控制器。提要的 HTML 是从 DetailController 的自定义 setFeed() 方法中的 items 数组加载的:

[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 推送到下一个视图,但其中没有加载任何内容。我的意思是我在 BrowserViewController 的 NIB 文件中的 UIWebView 旁边放了一个标签,只是为了确保通过查看标签来加载 NIB;及其展示。另外,我在 NIB 文件中定义了一个与 UIWebView 连接的 Outlet webView,所以这应该不是问题。

如果不清楚问题出在哪里:当点击链接时,browserViewController 会显示标签,但 webView 不加载请求。

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

祝你有美好的一天, 升

【问题讨论】:

  • 这是您的实际代码吗?它甚至不可编译,它包含“[[BrowserViewController alloc] init]];” (不匹配的括号)——你有没有简化和砍掉东西?请显示实际代码。
  • 如果为 browserViewController.webView 设置了一个委托,实际调用了哪些方法?是否调用了失败方法?不要忽略您的委托方法!他们试图告诉你有用的东西!
  • 您能告诉我们您是如何在 Web 视图中加载 HTML 的吗?
  • 如果将 '[NSURLRequest requestWithURL:request.URL]' 替换为 '[NSURLRequest requestWithURL:@"h t p://google.com"]' 会发生什么? (删除 HTTP btw 中的空格 - 必须添加它们以停止 stackoverflow 修改我的文本)

标签: iphone delegates uiwebview request


【解决方案1】:

当你在你的 loadRequest 调用前面加上 NSLog(@"WebView: %@", browserViewController.webView); 时,你会看到 webView 是 nil。

webView 目前不可用。它不是在 init 方法中创建的。

我建议将NSURL *url; 属性添加到您的BrowserViewController。然后你可以使用browserViewCOntroller.url = request.URL; 而不是[browserViewController.webView loadRequest:...。或者你可以直接保存 NSURLRequest。

在 BrowserViewController 的 viewDidLoad 方法中,您可以告诉 webview 加载 URL 或 URLRequest。


但我只是猜测。

【讨论】:

  • 谢谢...如果我从像[browserViewController.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]]; 这样的详细控制器执行它,它不会加载但是如果我在我的BrowserViewController 中定义一个NSURL *url,然后在初始化之前将url 的值传递给它并然后从browseViewController中加载*url,然后它就可以工作了!再次感谢大家
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
  • 1970-01-01
相关资源
最近更新 更多