我有一个基于导航的应用程序。在tableview中单击一行后,我会推送一个UIWebView。 UIWebView中包含Web链接。用户单击链接,该链接呈现外部网页。这一切都发生在我的应用程序中通过单击呈现链接和外部网页,顶部导航栏未更改。但是,一旦用户单击左上方的导航按钮,它们将返回到tableview而不是初始的UIWebView。如果他们点击跟随外部链接,我如何连接导航后退按钮并将用户放回初始UIWebView?
答案 0 :(得分:2)
您可以收到有关导航控制器更改的通知,但我不相信您可以阻止它们发生(UINavigationControllerDelegate协议)。
解决此问题的一种方法是将对象设置为webview的委托(UIWebViewDelegate协议)并实现:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
此处返回NO以避免在webview中打开链接,将请求移交给第二个视图控制器中的webview,并在导航控制器堆栈上推送第二个视图控制器。
这样您就不必拦截向后导航,但UI的行为与用户期望的一样。