2016-09-23 64 views
0

我有我的第一個視圖控制器此按鈕,當你按下它,它 觸發2動作:無法更改視圖控制器的屬性的實例

  • 功能iterateItems
  • 一個SEGUE該動畫播放至ResultViewController

我需要設置的ResultViewControllerdataSourcebestComposition爲了完成它的視圖,並且只能iterateItems後獲得該屬性的值完成時,我把這個代碼在iterateItems

print(bestComposition.count) 
let resultVC = ResultViewController() 
resultVC.dataSource = bestComposition 

然而,在ResultViewControllerviewDidAppear方法中,dataSource值是沒有改變,這裏的ResultViewController

var dataSource = [WeaponItems]() 
override func viewDidAppear(_ animated: Bool) { 
    print(dataSource.count) 
    ... 
} 

dataSource的值是ViewController 3,但在ResultViewController總是0,爲什麼沒有改變?

編輯(代碼爲賽格瑞準備):

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let secondVC = segue.destination as! ResultViewController 
    secondVC.transitioningDelegate = self 
    secondVC.modalPresentationStyle = .custom 
} 
+0

你是如何執行SEGUE?也顯示你的'prepareForSegue'方法。 –

+0

@ Mr.UB我添加了代碼 –

+0

也爲segue方法做準備 –

回答

1

resultVC是ResultViewController的實例,通過該行新創建:

let resultVC = ResultViewController() 

這不是自動創建的實例作爲賽格的一部分。 resultVC從不顯示,所以viewDidAppear從不運行,因此print語句永遠不會執行。同時,會顯示由segue創建的實例,因此viewDidAppear確實運行 - 但其dataSource的值未更改。嘗試:

let resultVC = segue.destinationViewController as! ResultViewController 
+0

我不能這樣做,'resultVC'是在另一個類中創建的 –

+0

@BrightFuture具有'bestComposition'的類如何與類相關賽格發生在哪裏? – pbasdf

+0

'iterateItems'來自那個叫'Calculator'的類,我在'ViewController'中創建了'Calculator'的一個實例(其中發生了segue) –

0

試試這個:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let secondVC = segue.destination as! ResultViewController 
    secondVC.transitioningDelegate = self 
    secondVC.modalPresentationStyle = .custom 
    secondVC.dataSource = bestComposition 
}