Apple 文档UIViewController
says:
如果您正在实现自己的容器视图控制器,它必须调用willMoveToParentViewController:
调用之前子视图控制器的方法removeFromParentViewController
方法,传入 nil 父值。
当您的自定义容器调用addChildViewController:
方法,它会自动调用willMoveToParentViewController
:在添加视图控制器之前将其添加为子视图控制器的方法。
如果您正在实现自己的容器视图控制器,它必须调用didMoveToParentViewController:
子视图控制器在转换到新控制器完成后的方法,或者如果没有转换,则在调用addChildViewController:
method.
The 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];
即使我删除了最后一行,我的代码也可以完美运行。有人可以帮我吗?
提前致谢
使用这些方法是因为这是添加或删除子视图控制器时要遵循的规则。添加子视图控制器之前willMoveToParentViewController
应首先调用方法,然后调用didMoveToParentViewController
方法。从父视图控制器中删除子视图控制器时,将以相反的顺序调用这些方法。
addChildViewController:
自动呼叫[child willMoveToParentViewController:self]
。所以应该打电话didMoveToParentViewController
after addChildViewController:
。相似地removeFromParentViewController:
自动呼叫[child didMoveToParentViewController:nil]
。所以应该打电话willMoveToParentViewController:
before removeFromParentViewController:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)