我有一个简单的应用程序,它列出了NSTableView
.
该表是一个完全标准的基于视图的表,有几列,并通过NSArrayController
using 绑定填充。所有这些都在 Interface Builder 中设置,并且按预期工作。
现在,我想以编程方式添加更多列,并将这些新列绑定到模型中的各种键路径。在那里,我被困住了。
为简单起见,假设以下设置:
- Model 对象是只有一个 NSString 属性的普通对象:
name
- AppDelegate 有一个 NSArray 属性 (
models
) ,它包含许多 Model 实例。 - 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
我已经尝试了很多从/到数据单元、表、列、数组控制器、数组本身以及各种键路径的绑定组合,但没有任何效果。新列添加得很好,但从未填充。
我想我创建的基本 NSTableColumn 实例是基于单元格的,而不是基于视图的,这会造成麻烦。但是,我不知道如何从这里开始,并且文档从不谈论以编程方式添加的绑定列。
在这种情况下,我只需要一个简单的文本列,绑定到模型,就像我可以轻松设置 IB 一样。
我可以通过实现一个NSTableViewDataSource
和“手动”喂表来完成所有这一切,但我已经用绑定设置了其他所有内容。
任何帮助将不胜感激。