为什么在调用addChild(UIViewController)之后要调用func didMove(toParent parent: UIViewController?)函数?

8

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

从苹果文档中可以得知:

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

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

看起来这个函数会更新视图控制器的过渡效果,但是我无法完全领会其呼叫背后的思想。如果我不调用它会发生什么?


我们这样做是为了告诉视图层次结构中添加的任何动画转换何时完全完成。否则,它就无法知道动画转换(如果有)是否已完成。尽管没有自定义转换,但苹果一直非常清楚地表示必须调用此方法。 - Rob
1个回答

7

如果您不这样称呼它,子视图控制器将无法检测到它已移动到父视图控制器中。 这可能很重要。 有时,您需要在子控制器移至父控制器后立即执行某些操作。


这在 Xamarin 中也可能吗? - robalem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接