是否有任何官方方法如何设置 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/