NavBar后退按钮行为

时间:2011-04-14 15:22:27

标签: iphone uinavigationbar

我有一个带导航控制器的应用程序。启动应用程序时,会加载一个表视图,单击一行,打开一个加载页面的webview(让我们调用该页面1)。 Page1可能包含链接,用户单击链接并加载新页面(第2页)。然后,用户想要返回到page1并单击导航栏中的后退按钮。单击后退按钮将他带到表视图而不是page1。

如何更改该行为或拦截后退按钮?

3 个答案:

答案 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。

谢谢,