View或ViewController ...都是视图?

时间:2010-03-19 18:06:46

标签: iphone uiviewcontroller interface-builder view

在Interface Builder中...当我将VIEW拖到文档窗口中...然后双击它...它会打开并显示VIEW窗口。 (正如预期的那样)

...但是当我将VIEW CONTROLLER拖到文档窗口中......然后双击它...它也会打开并显示VIEW窗口。 (它上面写着“视图”。)

是吗? (或者我完全误解了事情?)

我认为VIEW是绘制/拖动内容的实际对象。否?

我认为VIEW CONTROLLER只是您视图的 CODE 。否?

2 个答案:

答案 0 :(得分:2)

我没有使用Interface Builder的经验,但是控制器对象提供了将应用程序的数据桥接到视图所需的自定义逻辑。在iPhone应用程序中,视图控制器是一种特定类型的控制器对象,可用于显示和管理应用程序的视图。

每个ViewController都有一个与之关联的View属性,这是您在界面构建器中看到的属性。

存储在此属性中的视图表示视图控制器的视图层次结构的根视图。无论何时在屏幕上呈现视图控制器(模态或作为基于视图控制器的界面的一部分),都会检索此视图并在应用程序窗口中显示。此属性的默认值为nil

每个视图控制器对象都是其视图的唯一所有者。您不能将同一视图对象与多个视图控制器对象关联。

答案 1 :(得分:0)

Apple希望您在开发应用程序时遵循模型 - 视图 - 控制器系统,并且它非常简单和合乎逻辑。

  • 模型是您应用的核心。它处理数据库,网络连接和您需要的任何内容。它基本上是您在Xcode中创建的自定义类。
  • 视图是您的应用与用户之间的界面。您可以在Interface Builder中创建它们并将它们放在NIB文件中(最好是每个文件一个视图)。
  • Controller是视图和模型之间的粘合剂。它根据从模型中获取的内容(如数据库)定义视图的行为和状态(启用按钮,标签内容等)。它还基于从管理器(控件)的视图接收的事件对模型执行操作,例如更改数据库中的记录或更改对象中的变量。

所有这一切背后的想法是,该模型可以在每个平台上使用,只需要很少的修改。

每个控制器都应该链接到一个视图,而只能链接到一个视图,如表格(UITableViewController)或屏幕视图(UIViewController)。您将所需的控制器子类化,然后将其添加到与其关联的视图的NIB中。你就是这样做的:

  1. 在NIB中,选择文件所有者。
  2. 在Identity检查器中,将类设置为您在项目中创建的视图控制器。
  3. 在自定义控制器类中,为您需要访问的关联视图中的每个视图(例如IBOutlet)创建deleteButton。为每个商店创建和合成属性。
  4. 为您要注册的每个事件(例如IBAction)创建addButtonClicked
  5. 在NIB中,使用鼠标左键将一行从文件所有者拖到所需的插座视图,然后选择要进行的连接。重复此操作,直到所有IBOutlet都正确连接。
  6. 使用辅助鼠标按钮从想要将事件注册的视图拖到文件所有者,然后选择要进行的连接。重复此操作,直到所有IBAction都正确连接。
  7. 为控制器编写代码。