我当前正在swift中的一个应用程序中,在我的viewdidload()方法中,我故意将我的右barbutton隐藏在我的导航栏上:
self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(TableViewController.dismiss))
self.navigationItem.setRightBarButtonItem(nil, animated: true)
但是,在某些情况下,我想显示右barbutton。我该怎么做?上述代码线的相反是什么?
将条按钮项设置为 nil
后,它就消失了。但是,您可以做的事情是存储像:
let barButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(TableViewController.dismiss));
然后您可以使它出现/消失,因此:
self.navigationItem.rightBarButtonItem = barButtonItem
self.navigationItem.setRightBarButtonItem(nil, animated: true)
然后,只要您希望它出现/消失时访问barButtonItem
。
您可以执行以下两个选项之一:
-
保留您的
UIBarButtonItem
的引用,每次您消失时,都可以保存它,然后将其保存到当时要再次显示旧值时。 -
使用
UIBarButtonItem
的颜色和启用/禁用属性播放以启用与之交互的属性。
首选始终在全球范围内对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
中设置其初始值。
我希望这对您有帮助。