Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么我们在调用addChild(UIViewController)之后必须调用func didMove(toParent非父:UIViewController?)?_Ios_Uiviewcontroller_Uikit - Fatal编程技术网

Ios 为什么我们在调用addChild(UIViewController)之后必须调用func didMove(toParent非父:UIViewController?)?

Ios 为什么我们在调用addChild(UIViewController)之后必须调用func didMove(toParent非父:UIViewController?)?,ios,uiviewcontroller,uikit,Ios,Uiviewcontroller,Uikit,调用func-didMove(toParent-parent:UIViewController?的确切目的是什么 从苹果的文档中可以看出: 如果您正在实现自己的容器视图控制器,则必须在完成到新控制器的转换后调用子视图控制器的didMove(toParent:)方法,或者,如果没有转换,则必须在调用addChild(u:)方法后立即调用 移除子视图控制器后,removeFromParent()方法会自动调用子视图控制器的didMove(toParent:)方法 这个函数似乎更新了viewcontr

调用
func-didMove(toParent-parent:UIViewController?
的确切目的是什么

从苹果的文档中可以看出:

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

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


这个函数似乎更新了viewcontroller的转换,但我不能完全理解调用它背后的想法。如果我不调用它会发生什么情况?

如果不调用它,子视图控制器将无法检测到它确实移动到了父视图控制器。这可能很重要。有时,在移动到父对象后,您需要在子对象控制器中执行某些操作

我们这样做是为了告诉子对象在添加到视图层次中的任何动画过渡完成后的时间。否则,它无法知道动画转换(如果有)是否已完成。不过,苹果一直很清楚,即使不涉及定制转换,人们也“必须”这样称呼它。这在Xamarin中也是可能的吗?