【问题标题】:Why do we have to call func didMove(toParent parent: UIViewController?) after calling addChild(UIViewController)?为什么在调用 addChild(UIViewController) 之后还要调用 func didMove(toParent parent: UIViewController?)?
【发布时间】:2019-11-21 21:27:40
【问题描述】:

调用func didMove(toParent parent: UIViewController?)的具体目的是什么?

从苹果文档中说:

如果你正在实现自己的容器视图控制器,它必须在转换到新控制器后调用子视图控制器的 didMove(toParent:) 方法,或者如果没有转换,则在调用 addChild 后立即(_:) 方法。

removeFromParent() 方法在移除子视图后会自动调用子视图控制器的 didMove(toParent:) 方法。

该函数似乎更新了视图控制器的转换,但我无法完全掌握调用它背后的想法。如果我不调用它会发生什么?

【问题讨论】:

  • 我们这样做是为了告诉孩子我们什么时候完全完成了任何动画过渡,因为它被添加到视图层次结构中。否则,它无法知道动画过渡(如果有)是否已完成。不过,Apple 一直非常清楚,即使不涉及自定义转换,也必须“必须”调用它。

标签: ios uiviewcontroller uikit


【解决方案1】:

如果您不调用它,子视图控制器将无法检测到它确实移动到了父视图控制器。这可能很重要。有时你需要在移动到父控制器之后在子控制器中做一些事情

【讨论】:

  • 这在 Xamarin 中也可以吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多