【发布时间】: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