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];
移除过程与前一种情况的移除过程相同,不再赘述