在XCode,MVC中设计主/细节

Jef*_*eff 2 macos model-view-controller xcode cocoa

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

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

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

问题是挣扎是沿着的

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

显然,我很无能,我找不到解释"为什么?"的好教程.任何方向都受到赞赏,因为我以前的尝试是错综复杂的,几乎肯定违反了惯例和标准做法.

ipm*_*mcc 5

Apple实际上提供了一个非常好的教程/示例,说明了您所询问的具体情况:创建主 - 细节界面

值得注意的一点是,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文件中指定,其生命周期由框架管理.

我现在要停下来了,因为那里有很好的参考资料可以比你在这里做得更好.请查看:基于文档的应用程序编程指南(适用于Mac)