调用super.viewWillAppear(动画)时动画来自哪里?

piz*_*za7 3 ios swift

在我看到覆盖viewWillAppear(_ animated:Bool)的例子中,我对调用super函数传递的参数感到困惑:

super.viewWillAppear(animated)
Run Code Online (Sandbox Code Playgroud)

我认为"动画"是一个设置为true的Bool,但这个Bool来自哪里?它没有在我的UIViewController的其他地方声明,它不是UIViewController的属性.

vac*_*ama 9

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.