ios - 如何禁用导航栏中的后退按钮

标签 ios swift storyboard

是否有任何官方方法如何设置 UIBarButtonItem.enabled 属性?我试图在以前的 Controller 中设置一个 backButtonItem。但是 enabled 属性被忽略了。

这个简单的更多信息example project .

我不想要一些解决方案,例如“制作您自己的 leftBarButtonItem 并设置它的 alpha ...”

编辑:我不想隐藏它,只是用变暗的颜色和禁用的用户交互来禁用它。这与禁用 leftBarButtonItem 时的行为完全相同。

最佳答案

截至目前,无法使用 enabled 属性禁用后退按钮。 backBarButtonItem 属性将为 nil 除非您创建自定义项目,即使这样它也会忽略 enabled 属性。有几种(不令人满意的)方法可以解决这个问题。

隐藏按钮

这就是 Apple 希望您做的,因为他们忽略了 enabled 属性。就这么简单

navigationItem.hidesBackButton = true  

除非您有充分的理由,否则应该是首选方法。

禁用和着色导航栏

您可以在整个导航栏上禁用用户交互并将其着色以使后退按钮显示为禁用。

navigationController?.navigationBar.isUserInteractionEnabled = false
navigationController?.navigationBar.tintColor = UIColor.lightGray

不幸的是,这确实会影响导航栏中的其他元素,因此如果您在右侧有另一个栏按钮项,则它可能不是一个选项。

使用自定义左栏按钮项

leftBarButtonItem 不会忽略 enabled 属性,因此您可以创建自定义项并在激活时手动触发弹出。

navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(ThisClass.backButtonTapped))
...
navigationItem.leftBarButtonItem?.isEnabled = false

func backButtonTapped() {
    self.navigationController?.popViewController(animated: true)
}

但是,这将不会有带前导三角形指示器的后退栏按钮样式。

关于ios - 如何禁用导航栏中的后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32010429/

相关文章:

ios - 动画 subview

swift - 如何使用 Swift 获取其他应用程序的 WindowCount

swift - Google Places Autocomplete API 未在我的 Tableview 中填充确切的地址

ios - 在 Storyboard View 中找不到 NewViewController 子类

ios - Storyboard 中的自动布局会影响编程定位

ios - PGMidi更改音高sendBytes示例

iphone - 如何创建像 alertview 一样填充或调暗背景的 UIView?

ios - 如何隐藏 UITableViewCell?请看截图

ios - 如何在分享按钮中获取和显示屏幕截图?

ios - 如何在 iOS7 上为 iPhone 3.5 英寸创建单独的 .storyboard?