我已經在這個主題上殺了一天,但仍然不知道如何以正確的方式完成此操作。將單個NSCell綁定到多個值
我正在使用NSOutlineView
來顯示文件系統層次結構。對於第一列中的每一行,我需要顯示覆選框,關聯圖標和文件或目錄的名稱。由於沒有標準的方法來做到這一點,我已經使用SourceView和PhotoSearch示例分類NSTextFieldCell
,綁定value
IB到我的樹項目類name
屬性雖然NSTreeController
。我使用drawWithFrame:inView:
覆蓋來繪製複選框和圖像,將文本繪製轉發到super
。我也使用trackMouse:inRect:ofView:untilMouseUp:
覆蓋來處理複選框交互。
一切都很好,直到我注意到,當我按下鼠標按鍵時我自定義的細胞內,細胞對象被複制與copyWithZone:
這個臨時對象,然後發送一個trackMouse:inRect:ofView:untilMouseUp:
消息,使得它不可能修改的檢查狀態原始細胞駐留在視圖中。
由於問題的主題是關於綁定,我認爲這可能是答案,但我完全沒有得到如何連接所有這些混亂功能如預期。試過這個:
[[[treeView outlineTableColumn] dataCell] bind:@"state"
toObject:treeController
withKeyPath:@"selection.state"
options:nil];
但沒有成功。似乎我沒有得到它。
這可能是我採取的完全錯誤的方式嗎?你能否提出一個更好的選擇或任何鏈接進一步閱讀?
UPD 11年1月21日:我也試過這樣:
[[[treeView outlineTableColumn] dataCell] bind:@"state"
toObject:treeController
withKeyPath:@"arrangedObjects.state"
options:nil];
但一直得到類似的錯誤「[< _NSControllerTreeProxy爲0x ...> valueForUndefinedKey:]:此類不是關鍵狀態的密鑰值編碼。「和類似的。
是啊,這就是我的意思講`value`-`name`首先結合:我已經有`arrangedObjects.name`結合`value`所以我不能將它同時綁定到`arrangedObjects.state`(並且在我可以使用的列中沒有`state`綁定)。那可能怎麼樣? – 2011-01-21 05:46:10