我有一个带导航控制器的应用程序。启动应用程序时,会加载一个表视图,单击一行,打开一个加载页面的webview(让我们调用该页面1)。 Page1可能包含链接,用户单击链接并加载新页面(第2页)。然后,用户想要返回到page1并单击导航栏中的后退按钮。单击后退按钮将他带到表视图而不是page1。
如何更改该行为或拦截后退按钮?
答案 0 :(得分:1)
UIWebView有一个属性'goBack'& 'goForward'强> 我建议你创建一个单独的按钮来浏览和回放。向前。 为这些按钮实施以下操作。
(void)actionBackButtonPressed {
[myWebView goBack];
}
- (无效)actionForwardButtonAction {
[myWebView goForward];
}
答案 1 :(得分:1)
您需要使用其他人提到的委托方法和自定义UI自行管理UIWebView导航。要回答你的问题:导航项目的后退按钮,你无法覆盖默认的后退按钮行为,但你可以将自己的按钮放在navigationItem中(通常在viewDidLoad
中):
UIBarButtonItem *myBackButton = [[UIBarButtonItem alloc] initWith...
self.navigationItem.leftBarButtonItem = myBackButton;
[myBackButton release];
您可以选择最适合您应用的init...
UIBarButtonItem
方法。如果您愿意,可以将此按钮与Web视图结合使用,但恕我直言,将UIWebView的导航范例与UINavigationController的导航范例混合起来会很奇怪。但是,它是您的应用程序,所以只是尝试添加到您的工具箱中。
另请注意,无法创建看起来像标准后退按钮的UIBarButtonItem。如果你想要锥形的“后箭头”样式,你必须提供自己的按钮图像。
答案 2 :(得分:0)
我们有UIWebViewDelegate
方法跟踪webView中的内容加载。因此,当用户点击第1页上的任何链接时。您应该使用- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
方法。在此方法中,只需创建另一个新的viewController
(与page1相同)并使用loadRequest
推送newController。
谢谢,