Fla*_*ino 9 cocoa nstableview nstablecolumn cocoa-bindings
我有一个简单的应用程序列出了一些模型NSTableView.
该表是一个完全标准的基于视图的表,包含几列,并通过NSArrayController使用绑定进行填充.所有这些都是在Interface Builder中设置的,它可以正常工作.
现在,我想以编程方式添加更多列,并将这些新列绑定到模型中的各种键路径.在那里,我被困住了.
为简单起见,假设此设置:
namemodels),它包含许多Model实例.content绑定到应用程序委托的models数组.content绑定到阵列控制器arrangedObjects.name属性,即列→表格单元格视图→静态文本表格视图单元格→ 值绑定到表格单元格视图的objectValue.name据我所知,这是直截了当的,并且通过这本书,它就像一个魅力.
但是......如何添加更多列呢?
要以编程方式添加列(为了简单起见,我们只是说这个新列也应该只显示name属性,就像已经存在的列一样),我想我会在app delegate中做这样的事情:
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
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多从/到数据单元,表,列,数组控制器,数组本身以及各种键路径的绑定组合,但没有任何作用.新列添加得很好,但它从未填充过.
我想我创建的基本NSTableColumn实例是基于单元格的,而不是基于视图的,这会造成麻烦.但是,我不知道如何从这里开始,文档从不谈论以编程方式添加的绑定列.
在这种情况下,我想要的只是一个简单的文本列,绑定到模型,就像我可以轻松设置IB的那样.
我可以通过实现NSTableViewDataSource和"手动"输入表来完成所有这些操作,但我已经完成了其他所有已经设置的绑定.
任何帮助将不胜感激.
试试这样: -
NSString *akey = @"keyValue";
NSString *keypath = [NSString stringWithFormat:@"arrangedObjects.%@",akey];
NSTableColumn *tableColumn=[[NSTableColumn alloc]initWithIdentifier:@"newColumn"];
[tableView addTableColumn:tableColumn];
[tableColumn bind:NSValueBinding toObject:yourArrayController withKeyPath:keypath options:nil];
NSMutableDictionary *dc=[NSMutableDictionary dictionary];
[dc setObject:@"textValue" forKey:@"keyValue"];
[yourmutableArray addObject:dc];
[self setYourmutableArray:yourmutableArray];
Run Code Online (Sandbox Code Playgroud)
请注意: - 您的可变数组应该绑定到arraycontroller,然后它才会填充数据
| 归档时间: |
|
| 查看次数: |
4414 次 |
| 最近记录: |