在UIWebView中单击链接时,iOS会从DetailViewController中获取

时间:2014-03-11 17:09:46

标签: ios objective-c uiwebview storyboard segue

我正在构建一个Master-Detail应用程序。 在详细信息视图中,UIWebView根据主服务器中选择的内容显示html内容。由于这个html还包含链接,我想在另一个视图中打开这些链接(一个uiwebview,有可能返回,重新加载等等 - 几乎是浏览器)。

我已将DetailViewController设置为DetailViewController.h中的UIWebViewDelegate

@interface DetailViewController : UIViewController <UISplitViewControllerDelegate, UIWebViewDelegate>

在DetailViewController.m中

- (void)configureView 

(detailHtml是显示所述HTML内容的UIWebView)我做

self.detailHtml.delegate = self;

此外,我有点击链接时触发的功能

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
    if ( inType == UIWebViewNavigationTypeLinkClicked ) {
        [self.navigationController performSegueWithIdentifier:@"openCustomBrowser" sender:self];
        return NO;
    }
    return YES;
}

将segue连接到详细视图控制器而不是导航控制器也不起作用。 故事板: http://s27.postimg.org/9hpgpmf1e/Bildschirmfoto_2014_03_11_um_18_02_19.jpg

我收到以下错误:

*** WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction:request:frame:decisionListener: 
delegate: <NSUnknownKeyException> [<BrowserViewController 0x8a5b120> setValue:forUndefinedKey:]: 
this class is not key value coding-compliant for the key reload.

1 个答案:

答案 0 :(得分:0)

我认为你需要puth inRequest作为发件人。 但为什么你需要创建新的视图控制器?您可以使用goBack方法从那个UIWebView返回。只需在工具栏或navigationItem中添加相应的按钮。