0

我是 iOs 开发的新手,想遵循正确的设计模式,但看起来 Xcode 默认强制用户使用 MVC 设计模式。

我有模型(MyApp.h)你有一个视图(我可以在其中拖放组件)我有一个控制器(MyApp.m)

这是正确的思维方式吗?

谢谢

4

3 回答 3

4

我将举一个非常基本的例子。

您想要显示人员列表,包括他们的姓名、年龄和位置,如下所示:

Bob    32    United States
Paul   22    England
Jack   24    France
...

在这里,您将创建一个新类,继承自NSObject,您将调用它Person。您的类将由头文件 (.h) 和实现文件 (.m) 组成。它将具有属性,以保存“真实”人的不同元素,以及访问和/或处理它们的方法(获取名称、增加年龄、更改位置)。这是你的模型

然后,您将使用 的子类UITableViewController,称为CustomTableViewController,来呈现数据。这是你的控制器

视图实际上tableView包含在您的UITableViewController.

MVC 模式背后的基础是您CustomTableViewController负责tableView和您的Person对象之间的通信。这发生在你tableViewController的文件的执行中CustomTableViewController.m

您的tableViewController意愿(例如)创建一个Person对象数组,从某个地方获取所有数据,创建Persons,将它们存储到数组中,等等。

然后,UITableViewControllers(当然还有它们的子类)实现一个名为 的委托方法cellForRowAtIndexPath:tableView当它需要显示一个单元格时调用该方法。tableViewController创建一个,用cell数据填充它,并将单元格交给tableView。这就是你处理沟通的方式。你不直接要求你tableView去获取数据。

这也适用于反向。如果您tableView允许编辑,它将通知tableViewController用户交互,而后者的作用是反映对模型的修改。

于 2013-05-15T14:23:05.053 回答
1

不完全的。最好从 Apple 的文档中了解它:

从:这个开始,然后你可以在这里 更深入地了解它

于 2013-05-15T13:59:25.187 回答
0

Xcode 不会“强制 MVC”。这是最佳实践,Apple 很容易做到,但 MVC 中的关键概念之一是将模型对象与视图和视图控制器对象分离,但这种适当的隔离仅通过程序员纪律而不是通过工具来实现。

无论如何,我建议您参考 Apple在Cocoa Core Competencies指南中关于Model-View-Controller的入门。该页面上有很多很好的链接。

于 2013-05-15T14:45:24.370 回答