在我看到覆盖viewWillAppear(_ animated:Bool)的例子中,我对调用super函数传递的参数感到困惑:
super.viewWillAppear(animated)
Run Code Online (Sandbox Code Playgroud)
我认为"动画"是一个设置为true的Bool,但这个Bool来自哪里?它没有在我的UIViewController的其他地方声明,它不是UIViewController的属性.
animated由调用者传入viewWillAppear().override func viewWillAppear(_ animated: Bool)表示viewWillAppear()接收一个值为a的值,Bool并且它将被称为animated函数内部.
所以:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
Run Code Online (Sandbox Code Playgroud)
只是将Bool它收到的值传递给它的超类.
那么,这个价值来自哪里?
推送viewController时:
self.navigationController?.pushViewController(myVC, animated: false)
Run Code Online (Sandbox Code Playgroud)
或以模态呈现:
self.present(myVC, animated: false, completion: nil)
Run Code Online (Sandbox Code Playgroud)
该Bool值传递给iOS,告诉它如何呈现新的viewController.
我假设"动画"是一个设置为true的Bool
如果animated总是true,也就没有理由把它作为输入值.它基于呈现viewController如何呈现新的viewController.
如果的viewController呈现一个赛格瑞的故事板,该animated值来自于动画中的复选框属性检查器的SEGUE.