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

时间:2017-09-08 01:43:02

标签: ios swift

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

super.viewWillAppear(animated)

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

1 个答案:

答案 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 属性检查器