追回按钮导航事件

时间:2009-04-18 20:52:08

标签: iphone cocoa-touch uitableview uiwebview uinavigationbar

我有一个基于导航的应用程序。在tableview中单击一行后,我会推送一个UIWebView。 UIWebView中包含Web链接。用户单击链接,该链接呈现外部网页。这一切都发生在我的应用程序中通过单击呈现链接和外部网页,顶部导航栏未更改。但是,一旦用户单击左上方的导航按钮,它们将返回到tableview而不是初始的UIWebView。如果他们点击跟随外部链接,我如何连接导航后退按钮并将用户放回初始UIWebView?

1 个答案:

答案 0 :(得分:2)

您可以收到有关导航控制器更改的通知,但我不相信您可以阻止它们发生(UINavigationControllerDelegate协议)。

解决此问题的一种方法是将对象设置为webview的委托(UIWebViewDelegate协议)并实现:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

此处返回NO以避免在webview中打开链接,将请求移交给第二个视图控制器中的webview,并在导航控制器堆栈上推送第二个视图控制器。

这样您就不必拦截向后导航,但UI的行为与用户期望的一样。