我有一個簡單的應用程序,列出NSTableView
中的一些模型。以編程方式將列(帶綁定)添加到基於視圖的NSTableView?
該表格是一個完全標準的基於視圖的表格,有幾列,並通過NSArrayController
使用綁定進行填充。所有這一切都是在Interface Builder中設置的,並且與預期一致。
現在,我想以編程方式添加更多列,並將這些新列綁定到模型中的各種關鍵路徑。在那裏,我卡住了。
爲了簡單起見,假設這種設置:
- 模型對象是隻是一個單一的NSString屬性平原對象:
name
- 的AppDelegate中具有一個NSArray屬性(
models
),其保持有多個模型的實例。 - NSArrayController的
content
綁定到應用程序代理的models
數組。 - NSTableView的
content
綁定到陣列控制器的arrangedObjects
。 - 該表的第一列被綁定(在IB)顯示
name
屬性,即列→表格單元視圖→靜態文本表視圖細胞→值被綁定到表格單元視圖的objectValue.name
就我所知,這是一本簡單直接的書,它的作用就如同一種魅力。
但是...我該如何添加更多列呢?
以編程方式添加一列(保持它的簡單,讓我們只說這個新列應該也只顯示name
財產,就這樣已經存在的列),我想我會做這樣的事情在應用程序委託:
NSTableColumn* newColumn = [[NSTableColumn alloc] initWithIdentifier:@"newColumn"];
// do binding magic somehow
// [[newColumn dataCell] bind:NSValueBinding toObject:??? withKeyPath:??? options:nil];
[self.table addColumn:newColumn]; // the table's connected with an IBOutlet
我嘗試的從/向數據單元,表,列,陣列控制器,陣列本身,以及keypaths的所有方式結合這麼多的組合,但沒有用。新列添加得很好,但從未填充過。
我想象我創建的基本NSTableColumn實例是基於單元格的,而不是基於視圖的,這就造成了麻煩。但是,我不知道如何從這裏開始,文檔從不談論綁定已經以編程方式添加的列。
在這種情況下,我想要的只是一個簡單的文本列,綁定到模型,就像我可以輕鬆設置IB的那個一樣。
我可以通過執行NSTableViewDataSource
和「手動」提供表格來完成所有操作,但是我已經使用綁定設置了所有其他設置。
任何幫助將不勝感激。
對不起,不起作用;試過了。綁定列僅適用於基於單元格的表格。不是基於視圖的表格。 – Flambino