截至今天,无法使用enabled 属性禁用后退按钮。 backBarButtonItem 属性将是 nil 除非您创建自定义项,即使这样它也会忽略 enabled 属性。有几种(不令人满意的)方法可以解决这个问题。
隐藏按钮
鉴于他们忽略了 enabled 属性,这就是 Apple 希望您做的事情。就这么简单
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)
}
但是,这将没有带有前导三角形指示器的后栏按钮样式。