简述
在开发一个复杂页面时,我们总是希望能够降低页面中控件的耦合度或者让单独的控制器去管理某个稍微复杂些的控件,即使用一个类似容器的控制器来管理页面中控件的扩及。在最近的storyboard开发中,使用到了一个新的方便的控件——container view,写了一些简单的demo,来测试一下这个控件并总结一下简单的用法。
container view
storyboard中关于container view的描述 使用两个container view在一个页面上加载两个控制器的view大致的表述是在这个container view会建立一个和子控制器连接的segue,我们可以在父控制器中放入container view控件,每一个container view会自动创建一个关联的controller。controller中view的尺寸会随着container view的尺寸变化。
tips:控制器view的背景色优先级是大于container view的背景色。
父控制器中获取子控制器
界面创建完毕以后,最主要的就是在父控制中能够获取到子控制器,来进行一些操作。刚开始试的时候发现container view关联到控制器中只是一个uiview的类。获取对应的控制器比较麻烦。但是View和Controller 是通过segue来连接的。于是就考虑使用segue的代理方法方法来获取。
首先在父控制器中声明两个控制器 leftVC 和rightVC,然后在
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"left"]) {
self.leftVC = [segue destinationViewController];
}else if ([segue.identifier isEqualToString:@"right"]){
self.rightVC= [segue destinationViewController];
}
}
这个方法是优先于父控制器viewdidload执行的。所以获取到子控制器后可以在viewdidload中对子控制器进行操作。
Over
简单的记录一下container view的用法,以后再遇到新的用法会更新,也欢迎大家一起讨论怎么使用。
网友评论