iOS视图控制器<2>
2015-11-10 20:44
363 查看
Container View Controllers 容器视图控制器
UITabBarController、UINavigationController、UIPageViewController都是内置的父视图控制器:你将子视图控制器传给它们,它们会将子视图控制器的视图放进它们自己的视图中。
在iOS5中,苹果引入了一种连贯的方式来让你创建自己的父视图控制器,可以有效地管理子视图控制器,把子视图控制器的视图放进界面中。这种自定义的父视图控制器叫做容器视图控制器(container view controller)
添加和移除子视图控制器
视图控制器有个数组类型的可读属性:
添加子视图控制器:
当一个视图控制器要成为你定义的父视图控制器的子视图控制器时,你定义的父视图控制器必须要按照下面的顺序来完成这些事情:
1.发送
2.让子视图控制器的视图进入界面中(作为你定义的父视图控制器的视图的子视图)
3.向子视图控制器发送didMoveToParentViewController:消息,你定义的父视图控制器作为参数
移除子视图控制器
1.向子视图控制器发送willMoveToParentViewController:消息,参数为nil
2.从你的界面中移除子视图控制器的视图
3.向子视图控制器发送removeFromParentViewController消息。子视图控制器会自动从父视图控制器的childViewController数组中移除。
记住:
为父视图控制器添加一个子视图控制器:
下一个问题是如何用另一个子视图控制器的视图来替代界面上的视图控制器的视图?方法是向父视图控制器发送下面的消息:
上面的方法会很好地对视图进行管理,在transition之前,添加一个子视图控制器的视图到界面上,在transition之后,移除另一个子视图控制器的视图从界面上。
UITabBarController、UINavigationController、UIPageViewController都是内置的父视图控制器:你将子视图控制器传给它们,它们会将子视图控制器的视图放进它们自己的视图中。
在iOS5中,苹果引入了一种连贯的方式来让你创建自己的父视图控制器,可以有效地管理子视图控制器,把子视图控制器的视图放进界面中。这种自定义的父视图控制器叫做容器视图控制器(container view controller)
添加和移除子视图控制器
视图控制器有个数组类型的可读属性:
public var childViewControllers: [UIViewController] { get },那么,视图控制器便可以成为父视图控制器,但是,你不能仅仅只填充这个数组。为了成为父视图控制器,你的视图控制器子类必须要实现某些职责:
添加子视图控制器:
当一个视图控制器要成为你定义的父视图控制器的子视图控制器时,你定义的父视图控制器必须要按照下面的顺序来完成这些事情:
1.发送
addChildViewController:消息给自身,子视图控制器作为参数,子视图控制器会自动添加到childViewControllers数组中,会被保持。
2.让子视图控制器的视图进入界面中(作为你定义的父视图控制器的视图的子视图)
3.向子视图控制器发送didMoveToParentViewController:消息,你定义的父视图控制器作为参数
移除子视图控制器
1.向子视图控制器发送willMoveToParentViewController:消息,参数为nil
2.从你的界面中移除子视图控制器的视图
3.向子视图控制器发送removeFromParentViewController消息。子视图控制器会自动从父视图控制器的childViewController数组中移除。
记住:
addChildViewController:会自动为你发送
willMoveToParentViewController:这个消息;
removeFromParentViewController会自动为你发送
didMoveToParentViewController:消息
为父视图控制器添加一个子视图控制器:
let son=sonController() self.addChildViewController(son) son.view.frame=self.view.frame self.view.addSubview(son.view) son.didMoveToParentViewController(self)
下一个问题是如何用另一个子视图控制器的视图来替代界面上的视图控制器的视图?方法是向父视图控制器发送下面的消息:
transitionFromViewController:toViewController: duration: options: animations:completion:
上面的方法会很好地对视图进行管理,在transition之前,添加一个子视图控制器的视图到界面上,在transition之后,移除另一个子视图控制器的视图从界面上。
相关文章推荐
- 升级ios9后RSA加密SecItemAdd出问题的解决方法
- iOS webservice
- iOS-CoreLocation实现定位当前城市
- ios 新浪微博网页登陆分享 {error:userinfoerror pos:5}
- #在蓝懿学习iOS的日子#第五个练习日
- 【iOS开发】总结
- iOS-->关闭键盘和代码退出应用程序的方法
- 小技巧8-iOS 使用Global BreakPoint(全局断点)快速定位Bug
- iOS实现简单备忘录程序——TaskList
- 小技巧7-iOS 如何关闭所有断点、移除所有断点
- ios协议 与代理
- 【转】 ios开发证书CER文件、P12文件,mobileprovition许可文件的用途
- 【转】IOS 开发环境,证书和授权文件等详解
- iOS项目开发过程中的目录结构(转)
- iOS 第三方gitHub链接
- iOS button设置背景图片后,设置cornerRadius没效果的问题
- storyboard设置控件的长宽比和控件之间的尺寸成比例
- iOS 多种数据类型存入NSMutableArray数组
- iOS Project和target
- iOS短信验证码SDK集成文档