我的第一个视图控制器里有这个按钮,当你按下它时
触发器2操作:
函数iterateItems
动画设置为ResultViewController
我需要将dataSourceResultViewController设置为bestComposition才能完成其视图,并且此属性的值只能在iterateItems完成后获得,我将此代码放入iterateItems中:

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

然而,在viewDidAppearResultViewController方法中,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/

10-13 04:29