iOS UIKit:viewController之层次结构(1)

      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

转载于:https://www.cnblogs.com/huliangwen/p/5452918.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值