addChildViewController的使用
2014-09-02 14:58
323 查看
在苹果的WWDC2011大会视频的《Session 101 – What’s New in Cocoa》 和《Session 102 – Implementing UIViewController
Containment》 中介绍了苹果在iOS5中给UIViewController新增加的5方法以及一个属性:
在以前,一个UIViewController的View可能有很多小的子view。这些子view很多时候被盖在最后,我们在最外层ViewController的viewDidLoad方法中,用addSubview增加了大量的子view。这些子view大多数不会一直处于界面上,只是在某些情况下才会出现,例如登陆失败的提示view,上传附件成功的提示view,网络失败的提示view等。但是虽然这些view很少出现,但是我们却常常一直把它们放在内存中。另外,当收到内存警告时,我们只能自己手工把这些view从super
view中去掉。
另外,当收到系统的Memory Warning的时候,系统也会自动把当前没有显示的subview unload掉,以节省内存。
Containment》 中介绍了苹果在iOS5中给UIViewController新增加的5方法以及一个属性:
// 方法 addChildViewController: removeFromParentViewController: transitionFromViewController:toViewController:duration:options:animations:completion: willMoveToParentViewController: didMoveToParentViewController: // 属性 @property(nonatomic,readonly) NSArray *childViewControllers
原来的问题
这些新增的方法和属性用于改进我们的编程方式。那么让我们先看看以前的对于UIViewController的使用有什么潜在的问题,认清问题,我们才能理解苹果改变的意义。在以前,一个UIViewController的View可能有很多小的子view。这些子view很多时候被盖在最后,我们在最外层ViewController的viewDidLoad方法中,用addSubview增加了大量的子view。这些子view大多数不会一直处于界面上,只是在某些情况下才会出现,例如登陆失败的提示view,上传附件成功的提示view,网络失败的提示view等。但是虽然这些view很少出现,但是我们却常常一直把它们放在内存中。另外,当收到内存警告时,我们只能自己手工把这些view从super
view中去掉。
改变
苹果新的API增加了addChildViewController方法,并且希望我们在使用addSubview时,同时调用[self addChildViewController:child]方法将sub view对应的viewController也加到当前ViewController的管理中。对于那些当前暂时不需要显示的subview,只通过addChildViewController把subViewController加进去。需要显示时再调用transitionFromViewController:toViewController:duration:options:animations:completion方法。另外,当收到系统的Memory Warning的时候,系统也会自动把当前没有显示的subview unload掉,以节省内存。
相关文章推荐
- iOS开发之使用addChildViewController:给控制器添加子控制器
- IOS addChildViewController方法使用及注意事项
- addChildViewController 的使用
- 使用addChildViewController 遇到没有加载的controller viewdidload也被调用
- 浅谈UIViewController 使用-addChildViewController自定义视图控制器
- IOS addChildViewController方法使用及注意事项
- iOS addChildViewController 使用
- 使用addChildViewController时出现的问题
- 用AddChildViewController自制抽屉
- addChildViewController方法
- iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)
- IOS5中的addChildViewController
- ios中的addChildViewController 和 android中的fragment
- addChildViewController
- iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)
- UIViewController 的addChildViewController:(UIViewController *) 方法
- 试图切换控制addChildViewController、_transitionFromViewController
- pushViewController/presentModalViewController/addSubView区别及使用方法
- pushViewController/presentModalViewController/addSubView区别及使用方法
- addChildViewController ipad 中Controller的嵌套和叠加