我有一个应用程序,显示一个网页的webView。网站由一个有很多子页面的主页组成。当我在主页上时,我想让导航后退按钮保持返回到前一个视图控制器的默认行为。但当网页在一个子页面上时,我希望导航后退按钮将网页带到主网页。
因此,我需要捕捉用户何时按下后退按钮,如果他在web子页面上,将他带到web主页,并防止webView关闭。我在想,我可以使用viewWillDisappear()来捕捉后退按钮,但是如何防止视图关闭呢?
发布于 2016-04-24 17:36:54
看看这篇文章:
Execute action when back bar button of UINavigationController is pressed
在你的视图控制器代码中,应该这样做:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.hidesBackButton = true
let customBackButtonItem = UIBarButtonItem(title: "Back", style: .Bordered, target: self, action:#selector(customBackMethod(_:)))
self.navigationItem.leftBarButtonItem = customBackButtonItem
}
// @objc is so we can use #selector() up above
@objc func customBackMethod(sender: UIBarButtonItem) {
if webView.canGoBack {
webView.goBack()
}
}
请注意,如果您想要一个“返回”图像,您可能必须使用UIBarButtonItem(图像:,样式:,目标:,动作:)或UIBarButtonItem(customView:)。有关更多详细信息,请参阅以下问题和答案:https://stackoverflow.com/a/36180934/892990
发布于 2016-04-24 17:42:41
类似于KickimusButticus的回答:
如果你想使用故事板之类的东西更容易地做到这一点,你可以像这样将你的后退按钮连接到一个IBAction上:
@IBAction func back() {
}
并对用户是否在sub视图的子页面中进行内部测试。如果是这样的话,你可以在webview上乱搞。如果它们在主页上,您可以简单地使用back按钮分割到您的主视图控制器,或者使用self.dismissViewControllerAnimated(true, completion: nil)
关闭该视图控制器。
https://stackoverflow.com/questions/36821190
复制相似问题