有没有官方方式如何设置UIBarButtonItem.enabled属性?我试图在前一个控制器中设置一个backButtonItem.但是,启用的属性将被忽略.
更多在这个简单的example project.
我不想要一些解决方案,如“make your own leftBarButtonItem and set its alpha …”
编辑:我不想隐藏它,只能使用变暗的颜色禁用它,并禁用用户交互.它与禁用的leftBarButtonItem完全相同.
解决方法
截至今天,无法使用enabled属性禁用后退按钮.除非创建自定义项目,否则backBarButtonItem属性将为零,即使这样,它也将忽略enabled属性.有一对(不满意)的方式.
隐藏按钮
这是苹果希望你做的,因为他们忽略了启用的属性.就像这样简单
navigationItem.hidesBackButton = true
并且应该是首选方法,除非你有很好的理由.
禁用和着色导航栏
您可以在整个导航栏上禁用用户交互,并使其变暗使后退按钮显示为禁用.
navigationController?.navigationBar.userInteractionEnabled = false navigationController?.navigationBar.tintColor = UIColor.lightGrayColor()
不幸的是,这样做也会影响导航栏中的其他元素,因此,如果您在右侧有另一个按钮项,则可能不是一个选项.
使用自定义左栏按钮项
leftBarButtonItem不会忽略启用的属性,因此您可以创建自定义项目,并在激活时手动触发该弹出窗口.
navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back",style: .Plain,target: self,action: "backButtonTapped") ... navigationItem.leftBarButtonItem?.enabled = false func backButtonTapped() { self.navigationController?.popViewControllerAnimated(true) }
然而,这将不具有前导三角形指示器的后条按钮样式.