首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >覆盖ios后退按钮

覆盖ios后退按钮
EN

Stack Overflow用户
提问于 2016-04-24 17:09:01
回答 2查看 2.4K关注 0票数 0

我有一个应用程序,显示一个网页的webView。网站由一个有很多子页面的主页组成。当我在主页上时,我想让导航后退按钮保持返回到前一个视图控制器的默认行为。但当网页在一个子页面上时,我希望导航后退按钮将网页带到主网页。

因此,我需要捕捉用户何时按下后退按钮,如果他在web子页面上,将他带到web主页,并防止webView关闭。我在想,我可以使用viewWillDisappear()来捕捉后退按钮,但是如何防止视图关闭呢?

EN

回答 2

Stack Overflow用户

发布于 2016-04-24 17:36:54

看看这篇文章:

Execute action when back bar button of UINavigationController is pressed

在你的视图控制器代码中,应该这样做:

代码语言:javascript
运行
复制
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

票数 0
EN

Stack Overflow用户

发布于 2016-04-24 17:42:41

类似于KickimusButticus的回答:

如果你想使用故事板之类的东西更容易地做到这一点,你可以像这样将你的后退按钮连接到一个IBAction上:

代码语言:javascript
运行
复制
@IBAction func back() {

}

并对用户是否在sub视图的子页面中进行内部测试。如果是这样的话,你可以在webview上乱搞。如果它们在主页上,您可以简单地使用back按钮分割到您的主视图控制器,或者使用self.dismissViewControllerAnimated(true, completion: nil)关闭该视图控制器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36821190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档