- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
关于 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/
我做了一个简单的测试来了解更多关于包含 View Controller 的信息。 我有一个 View Controller ,我在其中使用两个按钮的操作添加/删除了一个 View Controller
我有两个 View Controller ,它们是 VCA 和 VCB。我还有一个导航 Controller ,可以从 VCA 推送到 VCB。在VCA的prepareForSegue方法中,有如下一
关于 UIViewController 的 Apple 文档说: 如果您正在实现自己的容器 View Controller ,它必须在调用 removeFromParentViewController
我知道从 iOS5 和新的 UIViewController 包含方法开始,您应该将这些方法与 addChildViewController:、removeFromParentViewControll
XCode 文档说 如果您正在实现自己的容器 View Controller ,它必须调用 willMoveToParentViewController:调用 removeFromParentView
在 WWDC 2012 session 中标题为 iOS 上 View Controller 的演变 - (void)willMoveToParentViewController:(UIViewCon
我是一名优秀的程序员,十分优秀!