假设有一个viewControllerA,我们想在viewControllerA中添加viewControllerB,需要执行以下方法:

  [viewControllerA addChildViewController:viewControllerB];

  [viewControllerA.view addSubView:viewControllerB.view];

  [viewControllerB didMoveToParentViewController:viewControllerA];

 

如果要在viewControllerA移除viewControllerB,需要执行以下方法:

  [viewControllerB didMoveToParentViewController:nil];

  [viewControllerB.view removeFromSuperView];

  [viewControllerB removeFromParentViewController];

 

需要注意以下两个方法:

  [viewControllerA addChildViewController:viewControllerB];

  [viewControllerB didMoveToParentViewController:viewControllerA];

这两个方法能够保证事件能够正确地传递,如一些生命周期事件viewWillAppear等,如果不写这两个方法,UI上可能显示正常,但是可能会收不到一些事件,导致程序出现问题。

 

另外,UINavigationController及UITabViewController都是容器viewController,它们在管理子viewController的时候也是用的上面的方法,原理一样。

 

https://cocoacasts.com/managing-view-controllers-with-container-view-controllers/

posted on 2018-09-07 18:02  ximenchuixie  阅读(89)  评论(0编辑  收藏  举报