iOS的界面实现中经常出现父-子控制器的层级问题,如下图中,红框部分为了方便内容的修改,往往使用h5页面,通过在终端加入webViewController来实现

 

 

总结一下添加/删除子控制器的方法

 

1. UIViewController中添加另一个UIViewController作为其子控制器

3步:加入子控制器、加入子view、调用子控制器的didMoveToParentViewController方法

参考代码:将一个webViewController加入当前viewController中

[self addChildViewController:self.webViewController];
[self.view addSubView:self.webViewController.view];
[self.webViewController didMoveToParentViewController:self];

可以在第二步和第三步之间插入使用Masonry对webViewController进行自动布局的相关代码

 

将子控制器从父控制器中移除

[self.webViewController willMoveToParentViewController:nil];
[self.webViewController.view removeFromSuperview];
[self.webViewController removeFromParentViewController];

此过程与添加子控制器的过程恰好相反

 

2. UIView中添加另一个UIViewController作为子控制器

有些情况下需要在一个UIView中添加子控制器,方法与在UIViewController中添加基本相同,只是把第二步的View换一下

例如将子控制器加入self.containerView中

[self addChildViewController:self.webViewController];
[self.containerView addSubView:self.webViewController.view];
[self.webViewController didMoveToParentViewController:self];

 

移除过程与前一种情况的移除过程相同,不再赘述