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