UIWebView委托第二次不工作

时间:2012-05-23 08:58:21

标签: iphone ipad webview uiwebviewdelegate

我有一个rss feed,它返回一个包含标题,短文本和全文大小文本的json。短文的标题和部分显示在TableView中。

我有3个控制器,有3个视图。 View 1显示一个包含json文章的TableView(标题和短文本),每篇文章都有一个“Read more”按钮,在按钮的IBAction中,我将一个viewcontroller(2)推入导航控制器,控制器有一个UIWebView(第二个View),它加载一个html字符串。该字符串包含链接,当用户点击链接时,我想用另一个WebView(3)呈现模态视图控制器,这次使用请求(请记住,两个WebView都有单独的控制器和笔尖)。 代表在两者上都设置正确,我从代码和使用可视化工具尝试。在第一个WebView中的委托方法 shouldStartLoadWithRequest 中我检查请求参数是否包含“http”或“www”,因为只有这样我才能调用第二个WebView。第二次WebView第一次运行良好,视图呈现模式很好,但是当我关闭它并点击相同的链接时,不会调用 shouldStartLoadWithRequest 委托方法,但链接会在相同的WebView(第一个)。

我用谷歌搜索了这个,但没有找到与我相似的案例或解决方案。我对ios app开发没有那么多经验,但是同事非常好,我们没有设法找到解决这个问题的方法。我们将代码拆开并进行分析,但是我们没有找到这个问题的潜在来源,他有一个单独的项目,他有同样的问题,只有他只使用一个控制器和一个WebView(我们的控制器和笔尖独立创建)。我们对研究和代码检查非常透彻

1 个答案:

答案 0 :(得分:1)

似乎解决方案非常简单。第一个WebView,显然失去了与它的委托的连接,因此,在第二个WebView控制器中添加

- (void)viewWillDisappear:(BOOL)animated {
    [self.parentViewController viewWillAppear:YES];
}

并在第一个WebView的第一个控制器中:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    webView_.delegate = self;
}

我希望这有助于某人