我是 iOs 开发的新手,想遵循正确的设计模式,但看起来 Xcode 默认强制用户使用 MVC 设计模式。
我有模型(MyApp.h)你有一个视图(我可以在其中拖放组件)我有一个控制器(MyApp.m)
这是正确的思维方式吗?
谢谢
我是 iOs 开发的新手,想遵循正确的设计模式,但看起来 Xcode 默认强制用户使用 MVC 设计模式。
我有模型(MyApp.h)你有一个视图(我可以在其中拖放组件)我有一个控制器(MyApp.m)
这是正确的思维方式吗?
谢谢
我将举一个非常基本的例子。
您想要显示人员列表,包括他们的姓名、年龄和位置,如下所示:
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
对象数组,从某个地方获取所有数据,创建Person
s,将它们存储到数组中,等等。
然后,UITableViewController
s(当然还有它们的子类)实现一个名为 的委托方法cellForRowAtIndexPath:
,tableView
当它需要显示一个单元格时调用该方法。tableViewController
创建一个,用cell
数据填充它,并将单元格交给tableView
。这就是你处理沟通的方式。你不直接要求你tableView
去获取数据。
这也适用于反向。如果您tableView
允许编辑,它将通知tableViewController
用户交互,而后者的作用是反映对模型的修改。
不完全的。最好从 Apple 的文档中了解它:
从:这个开始,然后你可以在这里 更深入地了解它
Xcode 不会“强制 MVC”。这是最佳实践,Apple 很容易做到,但 MVC 中的关键概念之一是将模型对象与视图和视图控制器对象分离,但这种适当的隔离仅通过程序员纪律而不是通过工具来实现。
无论如何,我建议您参考 Apple在Cocoa Core Competencies指南中关于Model-View-Controller的入门。该页面上有很多很好的链接。