2010-01-03 66 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個對象:內容,狀態和日期,並且對於每個狀態我顯示另一個圖像(完成,撤消,...)。

非常感謝您的幫助!我正在嘗試爲所有人完成測試:)