在XCode,MVC中设计主/细节

时间:2013-06-10 22:28:35

标签: xcode macos cocoa model-view-controller

我是MVC和XCode的新手,我无法将对MVC的概念理解转化为设计和实现具体的类。我希望得到一些关于如何构建控制器和视图以获得预期UI的建议。这适用于OS X应用程序(不是iOS)。

我的对象模型是3个对象:Batch,它有一些文本成员和一组产品。 Product有一些文本成员和一组图像。 Image基本上是存储图像的路径。

这个想法是主视图将显示所有批次的缩略图和标题的列表。单击一个将清除屏幕并显示该批次中所有产品的缩略图。单击产品将清除屏幕并打开产品详细信息页面,其中显示所有图像的产品数据和缩略图。单击图像缩略图将显示占据整个窗口的图像。

问题正在挣扎

  • 我使用哪种控制器?我从哪个继承?
  • 我是否在XIB对象列表中使用真实控制器或NSObject
  • 我使用哪种观点?我从哪个继承?
  • 哪些视图可以在XIB中,哪些视图必须动态添加?

显然,我很无能,我找不到解释“为什么?”的好教程。 任何方向都受到赞赏,因为我之前的尝试很复杂,几乎肯定会破坏惯例和标准做法。

1 个答案:

答案 0 :(得分:5)

Apple实际上提供了一个很好的教程/示例,说明您所询问的具体情况:Creating a Master-Detail Interface

值得注意的一点是,Apple的MVC概念与“经典”MVC模式略有不同(或者我怀疑Martin Fowler会这样说,无论如何)。如果你将现有的MVC概念放在一边并通过Apple提供的一些介绍性示例,我怀疑你会有更轻松的时间。

在30,000英尺处,Cocoa可能更像是Model-View-Presenter,或者不幸的是名为Model-View-ViewModel模式。记住整个模式可以嵌套或多次实例化(即乌龟一直向下)也是很好的。在最简单的基于文档的应用程序中,您将拥有一个NSDocument子类。这将拥有该模型,并且通常负责改变模型,以及读取和写入磁盘。通过这种方式,它是一个经典的MVC控制器。在默认的Xcode模板中,它也将是窗口的所有者,因此将作为“ViewController”执行双重任务,这是一个Cocoa-ism,大致相当于MVP中的“Presenter”。视图通常在XIB文件中指定,其生命周期由框架管理。

我现在要停下来了,因为那里有很好的参考资料可以比你在这里做得更好。看看这个:Document-Based App Programming Guide for Mac