理解addchildviewcontroller
来源:互联网 发布:苹果6s连上wifi没网络 编辑:程序博客网 时间:2024/06/05 02:21
之前在使用ViewController的时候需要增加View层总是使用addsubView添加N个View,但是这些View有时候不需要全部用到,如果有由视图控制器来管理,在需要的时候显示,不需要的时候释放掉以此来节省内存。而且还有一个好处就是切换视图控制器的时候可以更加自由地定义动画以及定义子视图控制器的大小。
在VC中直接使用addSubView虽热可以减少VC的耦合性,但是会带来其它更加严重的问题。
[self.view addSubView:self.vc.view];
直接add进去的SubView不在ViewController的view hierarchy内,事件没法正常传递,而且违背了CocoaTouch开发的设计MVC原则,ViewController应该且只应该管理一个view hierarchy.
所以应当使用addchildviewcontroller
//为视图控制器添加子视图控制器
[self addChildViewController:newVC];
//将子视图控制器的View添加到主视图控制器。
[self.view addSubview:newVC.view];
####注意点
在调用[父视图控制器 addChildViewController:子视图控制器]之前,无需显式调用[子视图控制器 willMoveToParentViewController:父视图控制器]方法,因为已经默认调用了。
在调用[父视图控制器 addChildViewController:子视图控制器]之后,要仅接着调用[子视图控制器 didMoveToParentViewController:父视图控制器]方法。
在调用[子视图控制器 removeFromParentViewController]之前,必须先调用[子视图控制器 willMoveToParentViewController:nil]。
在调用[子视图控制器 removeFromParentViewController]之后,无需显式调用[子视图控制器didMoveToParentViewController:父视图控制器],因为已经默认调用了。
在调用transitionFromViewController之前,调用[fromController willMoveToParentViewController:nil]。
在调用transitionFromViewController之后,调用[toController didMoveToParentViewController:父视图控制器]。
- 理解addchildviewcontroller
- 理解addchildviewcontroller
- addChildViewController
- addChildViewController
- addChildViewController
- addChildViewController:
- addChildViewController
- addChildViewController
- addChildViewController
- addChildViewController
- addChildViewController
- addChildViewController
- addChildViewController
- addChildViewController
- addChildViewController
- addChildViewController
- addchildviewcontroller
- View Controller容器(有助于理解addChildViewController)
- g++ 部分代码关闭编译warning信息
- springboot 历程
- pip安装包下载地址
- retrofit实现(一)
- NDK一
- 理解addchildviewcontroller
- JSP与servlet之间的传值方式
- SecureFX 查看隐藏文件夹
- 架构师之路-优秀博客推荐1
- 搭建hadoop分布式集群
- jQuery.fileDownload.js 文件下 成功响应
- 移动端meta设置项详解
- LeetCode 15 3Sum
- JAVA中那些可爱的运算符