我的第一个视图控制器里有这个按钮,当你按下它时
触发器2操作:
函数iterateItems
动画设置为ResultViewController
我需要将dataSource
的ResultViewController
设置为bestComposition
才能完成其视图,并且此属性的值只能在iterateItems
完成后获得,我将此代码放入iterateItems
中:
print(bestComposition.count)
let resultVC = ResultViewController()
resultVC.dataSource = bestComposition
然而,在
viewDidAppear
的ResultViewController
方法中,dataSource
的值没有改变,下面是ResultViewController
:var dataSource = [WeaponItems]()
override func viewDidAppear(_ animated: Bool) {
print(dataSource.count)
...
}
dataSource
的值在ViewController
中为3,但在ResultViewController
中始终为0,为什么不改变?编辑(准备segue的代码):
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let secondVC = segue.destination as! ResultViewController
secondVC.transitioningDelegate = self
secondVC.modalPresentationStyle = .custom
}
最佳答案
resultVC
是ResultViewController的一个实例,由以下行新建:
let resultVC = ResultViewController()
它不是作为segue的一部分自动创建的实例。
resultVC
永远不会显示,所以它永远不会运行,所以print语句永远不会执行。同时,segue创建的实例被呈现出来,因此它的viewDidAppear
确实在运行,但是它的viewDidAppear
值不变。尝试:let resultVC = segue.destinationViewController as! ResultViewController
关于ios - 无法更改 View Controller 属性的实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39656568/