视图层次结构与视图控制器

UIWindow作为iOS程序的窗口(也可以说是根视图),它就像一个容器,可以用来存放自己定义的各个子视图(UIView或其子类)。层次结构中的每个视图分别绘制自己,视图会将自己绘制在图层上。

为UIWindow添加View的方法为[self.window addSubView:(View的名字)];当然也可以设置window的rootViewController属性,rootViewController的类型为UIViewController类型,即视图控制器。每个UIViewController或者是继承自UIViewController的子类都有一个view属性,view属性指向一个UIView对象。 UIViewController对象可以管理一个视图层次结构,view就是这个视图层次结构的根视图,当程序将view作为子视图加入窗口时,也会加入UIViewController对象所管理的整个视图层次结构。

在UIViewController的子类对象中,UINavigationController对象、UITabBarController对象它们是包含视图控制器的视图控制器,我们称之为视图控制器容器。它们都有一个类型为数组的viewControllers属性,用以保存一组视图控制器。作为UIViewController的子类对象,它们也有view属性,并且将viewControllers中的对象的view加入自己的view中。

当我们使用视图控制器容器时,视图控制器容器与其viewControllers中的对象间就会产生父子关系,视图控制器容器是父亲,viewControllers中的对象是孩子。

处在同一个父子关系下的视图控制器形成一个家族。比如,UITabBarController对象跟它viewControllers中的对象就属于一个家族。家族可以有多个层级。例如,一个UITabBarController对象可以包含若干个UINavigationController对象,每个UINavigationController对象又可以包含若干个UIViewController对象;再如,一个UINavigationController可以包含一个UITabBarController对象,一个UITabBarController对象又可以包含若干个UIViewController对象,在上述两种情形下,UINavigationController对象、UITabBarController对象和UIViewController对象同属一个家族。

猜你喜欢

转载自blog.csdn.net/twier_/article/details/81257448