尝试使用 Swift 使 rightBarButton 消失后出现
Trying to make rightBarButton appear after making it disappear using Swift
我目前正在 Swift 中开发一个应用程序,在我的 viewDidLoad() 方法中,我故意将我的 rightBarButton 隐藏在我的导航栏上,如下所示:
self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(TableViewController.dismiss))
self.navigationItem.setRightBarButtonItem(nil, animated: true)
但是,在某些情况下,我想显示rightBarButton。我该怎么做?上面这行代码的反义词是什么?
将条形按钮项设置为 nil
后,它就消失了。但是,您可以做的是像这样存储栏按钮项目:
let barButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(TableViewController.dismiss));
然后你可以像这样appear/disappear:
self.navigationItem.rightBarButtonItem = barButtonItem
self.navigationItem.setRightBarButtonItem(nil, animated: true)
然后只要你想访问 barButtonItem
即可 appear/disappear。
您可以执行以下两个选项之一:
保留你的 UIBarButtonItem
的引用,每次你消失时你将它保存到然后当你想再次显示它时你设置旧值。
玩转 UIBarButtonItem
和 enabled/disable 属性 的颜色以启用与它的交互。
第一个选择始终保持对 UIBarButtonItem
的全局引用,第二个需要知道原始 UIBarButtonItem
的确切颜色以赋予其原始状态:
First Option:
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)
}
}
Second Option:
@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
到 hide/show 的 UIBarButtonItem
。变量 isHidden
需要在 viewDidLoad
.
中设置它的初始值
希望对你有所帮助。
我目前正在 Swift 中开发一个应用程序,在我的 viewDidLoad() 方法中,我故意将我的 rightBarButton 隐藏在我的导航栏上,如下所示:
self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(TableViewController.dismiss))
self.navigationItem.setRightBarButtonItem(nil, animated: true)
但是,在某些情况下,我想显示rightBarButton。我该怎么做?上面这行代码的反义词是什么?
将条形按钮项设置为 nil
后,它就消失了。但是,您可以做的是像这样存储栏按钮项目:
let barButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(TableViewController.dismiss));
然后你可以像这样appear/disappear:
self.navigationItem.rightBarButtonItem = barButtonItem
self.navigationItem.setRightBarButtonItem(nil, animated: true)
然后只要你想访问 barButtonItem
即可 appear/disappear。
您可以执行以下两个选项之一:
保留你的
UIBarButtonItem
的引用,每次你消失时你将它保存到然后当你想再次显示它时你设置旧值。玩转
UIBarButtonItem
和 enabled/disable 属性 的颜色以启用与它的交互。
第一个选择始终保持对 UIBarButtonItem
的全局引用,第二个需要知道原始 UIBarButtonItem
的确切颜色以赋予其原始状态:
First Option:
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)
}
}
Second Option:
@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
到 hide/show 的 UIBarButtonItem
。变量 isHidden
需要在 viewDidLoad
.
希望对你有所帮助。