如何禁用导航栏中的后退按钮
有没有官方的方法如何设置UIBarButtonItem.enabled
属性? 我试图在以前的控制器中设置backButtonItem。 但是enabled
属性被忽略。
更多这个简单的示例项目 。
我不想像“制作你自己的leftBarButtonItem并设置它的alpha ……”这样的解决方案。
编辑:我不想隐藏它,只是用暗灰色禁用它并禁用用户交互。 这与禁用的leftBarButtonItem
。
截至今天,无法使用enabled
属性禁用后退按钮。 除非您创建自定义项,否则backBarButtonItem
属性将为nil
,即使这样,它也将忽略enabled
属性。 这有几种(非令人满意的)方法。
隐藏按钮
这是苹果公司希望你做的事情,因为他们忽略了enabled
属性。 它很简单
navigationItem.hidesBackButton = true
除非你有充分的理由,否则应该是首选方法。
禁用并着色导航栏
您可以在整个导航栏上禁用用户交互,并对其进行着色以使后退按钮显示为禁用。
navigationController?.navigationBar.userInteractionEnabled = false navigationController?.navigationBar.tintColor = UIColor.lightGrayColor()
遗憾的是,这会影响导航栏中的其他元素,因此,如果您在右侧有另一个条形按钮项,则可能不会选择它。
使用自定义左栏按钮项
leftBarButtonItem
不会忽略enabled
属性,因此您可以创建自定义项并在激活时手动触发弹出窗口。
navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(ThisClass.backButtonTapped)) ... navigationItem.leftBarButtonItem?.enabled = false func backButtonTapped() { self.navigationController?.popViewController(animated: true) }
但是,这将没有带有前三角形指示器的后挡条按钮样式。
如果要隐藏它, UInavigationItem
有一个hidesBackButton
属性。
在ViewController2.swift类中添加以下代码。
override func viewDidLoad() { super.viewDidLoad() navigationItem.hidesBackButton = true; }
它会隐藏你的后退按钮。