gpt4 book ai didi

ios - didMoveToParentViewController 和 willMoveToParentViewController

转载 作者:IT王子 更新时间:2023-10-29 08:11:19 27 4
gpt4 key购买 nike

关于 UIViewController 的 Apple 文档说:

如果您正在实现自己的容器 View Controller ,它必须在调用 removeFromParentViewController 方法之前调用 subview Controller 的 willMoveToParentViewController: 方法,并传入一个父值为零。

当您的自定义容器调用 addChildViewController: 方法时,它会自动调用 willMoveToParentViewController: 在添加之前要添加为 subview Controller 的方法。

如果您正在实现自己的容器 View Controller ,它必须在转换到新 Controller 完成后调用 subview Controller 的 didMoveToParentViewController: 方法,或者如果没有转换,则立即在调用 addChildViewController: 方法之后。

removeFromParentViewController 方法在移除 subview Controller 后自动调用 subview Controller 的 didMoveToParentViewController: 方法。

为什么要调用这些方法?这些方法有什么作用?

ProfileViewController *profile = [[ProfileViewController alloc] init];
profile.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
[self addChildViewController:profile];
[self.view addSubview:profile.view];
[profile didMoveToParentViewController:self];

即使我删除了最后一行,我的代码也能完美运行。有人可以帮我解决这个问题吗?

提前致谢

最佳答案

使用这些方法是因为它是添加或删除 subview Controller 时要遵循的规则。在添加 subview Controller 之前,应首先调用 willMoveToParentViewController 方法,然后调用 didMoveToParentViewController 方法。从父 View Controller 中删除 subview Controller 时,将以相反的顺序调用这些方法。

addChildViewController: 自动调用 [child willMoveToParentViewController:self]。所以应该在 addChildViewController: 之后调用 didMoveToParentViewController。同样,removeFromParentViewController: 自动调用 [child didMoveToParentViewController:nil]。所以应该在 removeFromParentViewController:

之前调用 willMoveToParentViewController:

关于ios - didMoveToParentViewController 和 willMoveToParentViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32114179/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com