zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Windows 黑屏问题
    Java原生API操作XML
    Java使用Schema模式对XML验证
    使用Spring构建RMI服务器和客户端
    Eclipse多个console的使用
    jsr133-第一二章
    装个centos虚拟机之设置桥接网络
    Hadoop学习
    关于配置中心选型
    maven的SNAPSHOT版本和正式版本不同
  • 原文地址:https://www.cnblogs.com/huliangwen/p/5452918.html
Copyright © 2011-2022 走看看