以编程方式更改按钮在课外的特征

时间:2017-07-25 14:51:00

标签: swift class

在下面的代码中,我希望能够更改另一个类中按钮的可见性,但是当我尝试将button.isHidden更改为false时,该按钮仍然无法显示。

查看控制器1:

override viewDidLoad(){
     button.isHidden = true
}

查看控制器2:

ViewController1().button.isHidden = false

如何更改按钮在其他控制器上的可见性

1 个答案:

答案 0 :(得分:1)

调用ViewController1()会创建一个ViewController1实例,而不是使用已经实例化的ViewController1实例。

要从ViewController1访问ViewController2的属性(在本例中为按钮),您必须将该按钮的引用从ViewController1传递到ViewController2并更改通过该参考的属性。

您需要在prepare(for segue)中的ViewController1功能中设置引用。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "mySegue {
        let nextVC = segue.destination as! ViewController2
        nextVC.button = sender as! UIButton
    }
}

您还需要将segue设置为手动,并通过ViewController1

self.performSegue(withIdentifier: "mySegue", sender: self.button)中调用它

您需要在ViewController2中创建属性并按以下方式访问:

class ViewController2 {
   var button:UIButton?

   func showButtonOnVC1(){
       guard let button = self.button else { return }
       button.isHidden = false
   }

}