我有这种方法可以在某些情况下在网页视图中回到以前的网页,并且工作正常。但是,我想实现一个功能,检查我是否在原始网页上,如果是这样,当我按下后退按钮时,它会将我带到导航视图控制器。原始页面是这段代码[webView loadHTMLString:self.item.description baseURL:[NSURL URLWithString:self.item.link]];。现在我需要弄清楚如何检查我是否在该页面上,如果是,我需要执行此代码:[self.navigationController popViewControllerAnimated:YES];
。任何帮助将不胜感激。
- (void)back
{
if ([webView canGoBack]) {
[webView goBack];
} else {
[webView loadHTMLString:self.item.description baseURL:[NSURL URLWithString:self.item.link]];
}
}
答案 0 :(得分:1)
您可以使用shouldStartLoadWithRequest
的委托方法UIWebViewDelegate
来检查网址中包含的内容。如果你找到它,那就去NavigationController
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
if ([[request.URL absoluteString] rangeOfString:@"http://yourURL"].location!=NSNotFound) {
[self.navigationController popViewControllerAnimated:YES];.
}
}
答案 1 :(得分:0)
您需要添加
<UIWebViewDelegate>
到标题。然后将webView.delegate设置为yes;
将它设置为委托后,您可以获取absoluteString和requestURL,并覆盖该方法。使用absoluteString,您可以检查子字符串,文本,域,基本上你想要的任何东西!您重写了shouldStartLoadWithRequest或webViewDidFinishLoad:
-(void)webViewDidFinishLoad:(UIWebView *)webView
-(void)shouldStartLoadWithRequest :(UIWebView *)webView
每次加载任何网页时都会调用。