2009-05-26 75 views
16

它似乎我一直在尋找很長一段時間,並沒有找到一個偉大的,簡單的回答我的問題。NSTableView與自定義單元格

我正在使用Cocoa/ObjC的XCode,並試圖創建一個NSTableView,它將從NSDictionary /數組中加載值到單元格的不同部分。

例如,我試圖將NSImage,NSTextField和其他項目放入自定義單元格(以及背景圖像)。然而,我找不到一個簡單的答案來如何創建此..

我一直在用UITableViews一段時間的iPhone編碼,似乎無法找到與NSTableViews類似的方式。

任何幫助都會非常棒!

感謝

多米尼克

+0

這是我的[visual approach](http://stackoverflow.com/questions/5884265/how-to-setup-a-nstableview-with-a-custom-cell-using-a-subview)(還有一些渲染問題) – JJD 2011-05-05 10:28:17

回答

26

NSTableView的有-tableView:dataCellForTableColumn:row:。只需在委託中創建NSCell子類,並在需要爲該行定製時返回它。如果您只是在表格視圖中爲每行使用自定義單元格,則也可以使用IB來設置自定義單元格類。

表視圖將根據需要複製單元格,因此如果效率更高,則可以將單元格保留爲實例變量。數據源方法或表視圖上的綁定像通常那樣工作,只有您會返回您的填充字典而不是單個字符串或數字。您也可以將自定義模型對象直接傳遞給tableview,儘管您必須將其設置爲可複製,或者在您的單元格中覆蓋setObjectValue:以將其包裝在NSValue中。

如果它的子類化NSCell給你帶來麻煩,那可能是一種學習體驗。從-drawWithFrame:inView:開始繪製所有自定義對象,並從那裏開始,因爲您需要更多功能。

+1

感謝您的信息!我發現關於NSCell的文檔很少。 – 2009-10-03 18:13:02

3

單元格一次只能保存一個對象值。使用圖像和字符串/屬性字符串作爲屬性創建一個模型對象,並使用該對象填充表視圖。

此外,文本字段是一個視圖。你的模型應該對它的表現一無所知 - 這是你的觀點的工作。