View Controllers 学习

By | 2014/04/13

View Controllers(一)

概述

View Controller 是数据与界面交互式起关键作用的一环,无论什么时候IOS程序去展现他的界面那么他就需要一个或者一组view controller来协调界面中的view。

在IOS中提供了很多内置的view controller类来支持用户界面这一块,例如导航条啊,标题栏啊。作为程序开发的一部分开发者就需要实现一个或多个自定义的controllers在你的app来展示相关内容。

下面提供一个示意图:

../Art/navigation_interface_2x.png

ViewController 基本概念

IOS中广泛的使用了MVC思想,M:model(数据) V:view(视图)、C:controller(控制器)。controller的主要作用是控制协调model与view。举一个简单的例子:处理用户登录。用户点击编辑框输入用户名密码点击登录后,那么该事件就转交给该视图的viewController。viewController获取视图中的name,password相应值后Controller通知数据库查询相应用户名以及检查密码匹配否。Controller获得数据层的反馈后在将结果回馈给界面。Controller相当于一个中间人负责给view和model传话。在复杂的系统中Controller彼此之间也会互相发送消息。

可视化界面

下图展示了不同对象是如何组成一个界面的,该图有助于你理解各个部分组织的关系。

下面是上图中主要类的功能介绍:

1.UIScreen对象主要是标识一个设备上的屏幕。

2.UIWindow对象为在屏幕上绘图提供了支持。

3.一系列的UIView对象主要是执行绘图的任务,这些对象通常依附于window,当window要求他们绘制自己的时候他们便绘制他们的内容。

下图形象的展示了三种类之间的关系:

为了能够更好地理解viewController我们先来回顾一下view。view代表了一个界面元素,每一个view都覆盖了一个特定的区域。在该区域内它可以展示它的内容以及响应用户操作产生的事件。view之间是可以相互嵌套的,子视图的位置根据父视图的位置来确定。view几乎不知道他在你的app中扮演的角色,他不知道如何处理相应的事件,相反controller则相当于view的大脑,他知道如何处理这些事件。

ViewController对视图的管理

viewController主要用于组织和管理视图;被viewController管理的视图通常是一个视图层的根视图。viewController是MVC模式里的一种控制对象,在IOS里通常还会有一些其他特定的任务要去完成。这些任务被定义在了UIViewController类里面,因此所有的viewController都会执行这些视图、资源管理的任务。

一个viewController添加到window后会自动的把他的视图添加为window的子视图,如下图所示:

viewController只会在你需要视图的时候才会去加载它,而且在确定的情况下他回去释放掉view,因此viewController在程序中还扮演这资源管理者的这么一个角色。

在viewController里去管理与视图相连接的action是非常自然地事情。比如,当一个按钮被单击,他会发送一个消息给他的viewController。这个view可能不会去处理该消息,而viewController则会去处理该消息他知道这个按钮被按下意味着什么以及以何种方式去响应该消息。

用viewController来区分视图

上图演示了viewController共有的一些特点:

1.每一个视图都只被一个视图控制器控制,这种关系从将一个视图赋值给viewController的view属性时就确立了。如果一个视图是被视图控制器控制的视图的子视图,那么该子视图可以被该控制器控制也可被其他控制器控制。

2.每一个viewController都会与程序的部分数据即model层打交道,比如:photo controller知道只能跟那些要被展示的图片打交道到,而不能与其他数据打交道。

3.每一个viewController都只能够提供一部分的功能,要完成一个功能复杂的程序就需要多个controller密切合作。

One thought on “View Controllers 学习

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.