我目前正在使用Swift中的一个应用程序,在我的viewDidLoad()方法中,我故意在我的导航栏上隐藏了我的rightBarButton,如下所示:
self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(TableViewController.dismiss))
self.navigationItem.setRightBarButtonItem(nil, animated: true)
但是,在某些情况下,我想显示rightBarButton。我该怎么做?上面一行代码的反义词是什么?
答案 0 :(得分:2)
将条形按钮项设置为nil
后,它就会消失。但是,您可以执行的操作是存储条形按钮项目,如下所示:
let barButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(TableViewController.dismiss));
然后你可以让它像这样出现/消失:
self.navigationItem.rightBarButtonItem = barButtonItem
self.navigationItem.setRightBarButtonItem(nil, animated: true)
然后只要您希望它出现/消失,就可以访问barButtonItem
。
答案 1 :(得分:2)
您可以执行以下两个选项之一:
保留UIBarButtonItem
的引用,每次消失时将其保存到当时要再次显示时设置旧值。
使用UIBarButtonItem
和enabled / disable属性的颜色进行播放,以启用与之交互。
第一个选择始终保持UIBarButtonItem
的全局参考,第二个选择需要知道原始UIBarButtonItem
的确切颜色以提供其原始状态:
第一个选项:
private var isHidden: Bool!
private var righBarButtonItem: UIBarButtonItem!
@IBAction func hideButton(sender: AnyObject) {
if self.isHidden == true {
self.isHidden = false
self.navigationItem.rightBarButtonItem = righBarButtonItem
}
else {
self.isHidden = true
righBarButtonItem = self.navigationItem.rightBarButtonItem
self.navigationItem.setRightBarButtonItem(nil, animated: true)
}
}
第二个选项:
@IBAction func hideButton(sender: AnyObject) {
if self.isHidden == true {
self.isHidden = false
self.navigationItem.rightBarButtonItem?.tintColor = UIColor.clearColor()
self.navigationItem.rightBarButtonItem?.enabled = false
}
else {
self.isHidden = true
self.navigationItem.rightBarButtonItem?.tintColor = UIColor.blueColor()
self.navigationItem.rightBarButtonItem?.enabled = true
}
}
在上面的示例中,我设置了一个变量,其中UIBarButtonItem
的状态用于了解值,而@IBOutlet
用于隐藏/显示UIBarButtonItem
。变量isHidden
需要在viewDidLoad
中设置初始值。
我希望这对你有所帮助。