我在第一个视图控制器中有这个按钮,按下它时,它 触发2动作:
- 一个函数
iterateItems
- 动画为
的segueResultViewController
我需要将dataSource
的{{1}}设置为ResultViewController
才能完成其视图,并且只有在bestComposition
完成后才能获取此属性的值,我把这段代码放在iterateItems
:
iterateItems
但是,在print(bestComposition.count)
let resultVC = ResultViewController()
resultVC.dataSource = bestComposition
的{{1}}方法中,viewDidAppear
的值未更改,此处为ResultViewController
:
dataSource
ResultViewController
中var dataSource = [WeaponItems]()
override func viewDidAppear(_ animated: Bool) {
print(dataSource.count)
...
}
的值为3,dataSource
中的值始终为0,为什么它不会发生变化?
编辑(准备segue的代码):
ViewController
答案 0 :(得分:1)
resultVC
是ResultViewController的一个实例,由该行新创建:
let resultVC = ResultViewController()
这不是作为segue的一部分自动创建的实例。永远不会显示resultVC
,因此viewDidAppear
永远不会运行,因此永远不会执行print语句。同时,会显示由segue创建的实例,因此viewDidAppear
确实运行 - 但其dataSource
的值不变。尝试:
let resultVC = segue.destinationViewController as! ResultViewController
答案 1 :(得分:0)
试试这个:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let secondVC = segue.destination as! ResultViewController
secondVC.transitioningDelegate = self
secondVC.modalPresentationStyle = .custom
secondVC.dataSource = bestComposition
}