在使用Swift

时间:2016-06-20 22:22:49

标签: ios swift uinavigationbar uinavigationitem

我目前正在使用Swift中的一个应用程序,在我的viewDidLoad()方法中,我故意在我的导航栏上隐藏了我的rightBarButton,如下所示:

self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(TableViewController.dismiss))
self.navigationItem.setRightBarButtonItem(nil, animated: true)

但是,在某些情况下,我想显示rightBarButton。我该怎么做?上面一行代码的反义词是什么?

2 个答案:

答案 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中设置初始值。

我希望这对你有所帮助。