Aru*_*run 18 iphone objective-c uiviewcontroller ios
Apple文档UIViewController说:
如果要实现自己的容器视图控制器,则必须willMoveToParentViewController:在调用removeFromParentViewController方法之前调用子视图控制器的方法,并传入父值nil.
当您的自定义容器调用该addChildViewController:方法时,它会自动调用willMoveToParentViewController视图控制器的:方法作为子项添加,然后再添加它.
如果要实现自己的容器视图控制器,则必须didMoveToParentViewController:在转换到新控制器完成后调用子视图控制器的方法,或者如果没有转换,则在调用addChildViewController:方法后立即调用.
该removeFromParentViewController方法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];
Run Code Online (Sandbox Code Playgroud)
即使我删除了最后一行,我的代码也能正常运行.有人可以帮我吗?
提前致谢
Aru*_*run 22
使用这些方法是因为在添加或删除子视图控制器时应遵循该规则.在添加子视图之前,willMoveToParentViewController应先调用控制器方法,然后再调用didMoveToParentViewController方法.从父视图控制器中删除子视图控制器时,将以相反的顺序调用这些方法.
addChildViewController:自动呼叫[child willMoveToParentViewController:self].所以要调用didMoveToParentViewController之后addChildViewController:.同样removeFromParentViewController:自动调用[child didMoveToParentViewController:nil].所以要调用willMoveToParentViewController:之前removeFromParentViewController:
| 归档时间: |
|
| 查看次数: |
9828 次 |
| 最近记录: |