2017-07-25 72 views
0

在下面的代碼中,我希望能夠更改另一個類中按鈕的可見性,但是當我嘗試將button.isHidden更改爲false時,該按鈕仍然不顯示向上。以編程方式更改按鈕的外部特徵

視圖控制器1:

override viewDidLoad(){ 
    button.isHidden = true 
} 

視圖控制器2:

ViewController1().button.isHidden = false 

我怎樣才能改變從另一個控制器

+1

您需要以某種方式具有對按鈕的引用,或對ViewController1的引用。這取決於您如何設置代碼。 ViewController1對ViewController2有什麼關係? 用'ViewController1()'創建一個新的'ViewController1'意味着你有兩個'ViewController1's,所以改變一個按鈕對原來的'ViewController1'沒有影響。 –

回答

1

調用ViewController1()按鈕的可視性產生的,而不是參與工作的ViewController1實例已經實例化的ViewController1實例。

要從ViewController2訪問屬性(在這種情況下,按鈕)的ViewController1,必須從ViewController1傳遞給按鈕的引用到ViewController2並通過該參考更改屬性。

您需要在ViewController1prepare(for segue)函數中設置參考。

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

你還需要將SEGUE設置爲手動,並通過self.performSegue(withIdentifier: "mySegue", sender: self.button)

叫它ViewController1您需要ViewController2創建屬性和訪問它是這樣的:

class ViewController2 { 
    var button:UIButton? 

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

} 
相關問題