在下面的代码中,我希望能够更改另一个类中按钮的可见性,但是当我尝试将button.isHidden更改为false时,该按钮仍然无法显示。
查看控制器1:
override viewDidLoad(){
button.isHidden = true
}
查看控制器2:
ViewController1().button.isHidden = false
如何更改按钮在其他控制器上的可见性
答案 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
}
}