2010-01-03 67 views
2

我是新来的,在stackoverflow :)但我认为,这是正确的地方问我的问题。 我是一名Cocoa和Objective-c &的新开发人员我正在尝试为Mac编写我的第一个应用程序:一个ToDo应用程序。这个时候,我可以保存待办事项并删除它们,但是现在,我想添加一些功能,如CreationDate,一些标签(在mutablearray中),以及ToDo是否完成。我不使用ArrayController,我将编码的NSMutableArray保存到一个文件(库/应用程序支持/ AppName)并从那里读取它。在NSTableView行中显示多个对象

这一切都必须在一个行,因为它看起来像这样:

Current appearance http://img683.imageshack.us/img683/7595/bild2ss.png

如果标题是,应该是待办事项,这里的蓝箱是的内容,应该是状态(蓝色=撤消,灰色=完成)和其中副标题应该是日期和标签(03.01.2009 - tag1,tag2,tag3)

我现在如何将对象添加到mutablearray但如果我想保存所有这4个信息进入这个数组,我不知道如何做到这一点。

我有一个模型,该模型与此4个infomations初始化,但如何保存呢?我必须将此信息保存在一个数组中,并将此数组保存在我的mutablearray中?

回答

6

解决方案实际上是相反的:每行有一个对象。

这是您的模型图层(MVC中的M)出现的位置:每行的对象是model object,您构造的类的实例以及图标,标题和副标题是该对象的属性。

然后,做一个custom cell你的表列中显示那样的模型对象。该单元是View层的一部分 - MVC中的V.

MVC中的C位于模型和视图之间:它是拥有模型的对象,它是表视图的数据源(无论是否使用绑定)。表视图从该对象获取模型对象,将它们馈送给单元格。这个中间对象是一个Controller。

+0

您不一定需要为此创建自定义单元格。您可以使用标题和副标题的归因字符串,并使用NSImageCell作为状态。 – 2010-01-03 13:08:26

+0

确实如此,但将三个单独的属性值填充到单个属性字符串中是一种肮脏的方法。以特定的方式显示它们是一个View作业,并且伪造一个NSAttributedString来执行它将不得不在Controller或Model中发生 - 代码中不应该关心显示的两个部分。 – 2010-01-03 13:36:04

+0

感谢您的帮助,现在我正在与一个数组控制器,我有4列:)我试图让这个工作... – ahmet2106 2010-01-03 19:17:45

1

现在我拥有它了!

我只有一个Cell的内容与ArrayController。

我使用 - (id)init为每一行设置了其他信息。

有3个对象:内容,状态和日期,并且对于每个状态我显示另一个图像(完成,撤消,...)。

非常感谢您的帮助!我正在尝试为所有人完成测试:)