码迷,mamicode.com
首页 > 移动开发 > 详细

iOS UIKit:viewController之层次结构

时间:2016-05-02 20:00:58      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:

      ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁。且应用程序至少有一个view controller。每个view controller对象都负责和管理一个view对象,称此对象为root view,其组织和管理以root view为根的视图层次结构。

 

技术分享

图 11

可以将view controller分为两种类型:

      1) Content:用于管理视图中的分散view控件,这些分散view控件是app中的主要实体。

      2) Container:作为一种容器,用于存放和管理其它view controller,从而实现导航和表示。

1 Root View Controller

      Root view controller(简写为RVC)是所有 view controller的支柱,并且window使用RVC来填充其内容视图,即RVC作为window的子视图,app将所有可视化组件都放在了RVC之中,或者是RVC子视图中,如图 12所示。

技术分享

图 12 The root view controller

     在UIWindow对象中有一个rootViewController属性,其描述root VC对象。如果通过storyboards配置VC,那么UIKit会自动设置UIWindow的rootViewController属性;若通过程序创建window,那么需要手动设置window的rootViewController属性。

2 Container View Controllers

       Container view controllers(简写为CVC)可以将离散的视图或组件装配成复杂的app,从而能够复用这些组件或视图。UIKit定义了一些CVC容器,有UINavigationController、 UISplitViewController和UIPageViewController。

CVC负责管理子view controller的空间布局和位置,并且经常作为Root view controller,若图 13所示。当然CVC可以作为任何 view controller的父容器,包括其它的CVC。

技术分享

图 13 A container acting as the root view controller

3 Presented View Controllers

      Presented View Controllers(简写为PVC)经常用于替换当前显示的view controller,即将PVC作为新显示的内容。当present一个新的view controller作为显示的内容,那么UIKit将会为presenting view controller 和presented view controller之间创建一种关系,如图 14所示。

技术分享

图 14 Presented view controllers

      当present一个新的view controller时,UIKit会寻找一个能提供合适上下文的Container view controllers,大多数情况下是选择离最近的Container view controllers;有时需要用户手动指定Container view controllers作为这次present提供的上下文。

如图 15所示,描述了一个涉及Container view controllers的present操作,当屏幕显示黄色了是view时,present了绿色的视图。这时不是将黄色view所关联的controller作为presenting view controller,而是将navigation controller作为presenting view controller。

技术分享

图 15 A container and a presented view controller

iOS UIKit:viewController之层次结构

标签:

原文地址:http://www.cnblogs.com/hlwfirst/p/5452918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!