ios - 如何在 MVC 中正确读取模型?

标签 ios objective-c model-view-controller

我只是想知道在 MVC 类型设置中从模型读取的正确方法是什么。我了解它的目的是什么以及如何实现它,但在将它深入集成到更大的应用程序中时,我需要一些进一步的帮助。

例如:我有一个应用程序有一个 UITableViewController 类,该类利用其中的多个其他类,例如 UITableViewCells 的子类或自定义 header 。

我如何从所有这些类访问我的模型文件的同一个实例?我是否需要在原始 UITableViewController 类上设置一个属性,然后在子类之间传递它?还是我需要单例设置?

跨需要查看相同信息的多个不同类访问相同模型文件的最佳方式是什么?

最佳答案

通常,您将在 Controller 和 View 之间传递模型对象。例如,您的 UITableViewCell 子类应该接受来自 TableView Controller 的模型对象(通常作为属性)。然后 TableView Controller 只负责将模型对象组织成行和部分。它将它们的解释和渲染委托(delegate)给细胞。

在某些情况下,您可能有多个 TableView Controller 需要相同的模型对象组织。在这种情况下,您可以创建一个 TableView Controller 可以查询的模型 Controller 。

我长期以来一直使用单例来管理我的模型存储,并让 TableView Controller 查询它。然而,最近,我更倾向于将模型存储传递给 TableView Controller 。两种方式都需要权衡取舍,到目前为止,我还没有发现任何一种显然是更好的解决方案。只是不同。单例更容易开发;通过实例更容易测试。但无论如何, View 不应该直接进入模型商店;应该只将他们要显示的模型对象(通常只有一个)交给他们。

你应该小心避免的一件事是让 View Controller 与不是他们直接父级或子级的其他 View Controller 通信(即便如此,他们应该将这种情况最小化到初始设置和可能的“我完成了;这是结果”)。 View Controller 不是数据的持有者。任何 View Controller 都不应该向另一个 View Controller 请求模型对象。

关于ios - 如何在 MVC 中正确读取模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22077063/

相关文章:

iOS 8 修改苹果默认键盘?

ios - 如何在 phonegap 项目的启动画面后添加 UIViewController?

iphone - 创建带有按钮的自定义调出 View

javascript - RequireJS:如何定义构造函数?

iphone - IOS7中的图像背景问题

cocoa-touch - UIPickerView 在 iPhone 上占据了所有水平空间,但在 iPad 上却没有?

objective-c - Swift/ObjectiveC 互操作性 : closure property 'not found on object of type *'

php - 为什么超链接在发送密码重置邮件后不显示/在 gmail 中工作?

c# - 如何让一个 <div> 响应另一个 <div>?

ios - 进入后台暂停游戏