在我看到覆盖viewWillAppear(_ animated:Bool)的示例中,我对调用超级函数传递的参数感到困惑:
super.viewWillAppear(animated)
我认为"动画"是一个设置为true的Bool,但这个Bool来自哪里?它没有在我的UIViewController的其他地方声明,它不是UIViewController的属性。
答案 0 :(得分:8)
animated
由来电者传递给viewWillAppear()
。 override func viewWillAppear(_ animated: Bool)
表示viewWillAppear()
收到一个Bool
的值,并且在函数内部将被称为animated
。
所以:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
只是将它收到的Bool
值传递给它的超类。
那么,这个价值来自哪里?
按下viewController时:
self.navigationController?.pushViewController(myVC, animated: false)
或以模态呈现:
self.present(myVC, animated: false, completion: nil)
将Bool
值传递给iOS,告诉它如何呈现新的viewController。
我认为“动画”是一个设置为true的Bool
如果animated
始终为true
,则没有理由将其作为输入值。它基于呈现viewController如何呈现新的viewController。
如果viewController在 Storyboard 中显示 segue ,则animated
值来自 Animates 复选框。 segue 的属性检查器。