试图使右barbutton在使用Swift消失后出现



我当前正在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中设置其初始值。

我希望这对您有帮助。

最新更新