以编程方式使用NSTableView

时间:2012-11-06 04:31:44

标签: cocoa nstableview

我需要以编程方式创建/使用NSTableView。从文档中,我似乎将实现NSTableViewDataSource协议。但是函数tableView:objectValueForTableColumn:row:建议(因为行索引)我必须手动处理排序。是对的吗?此外,由于在每次重新显示时都会调用它,因此我可能会很慢,因为我使用的是Python,这意味着每个行/列都会调用Python。

我不知道使用Cocoa绑定是否有意义,而且更简单。在任何情况下,我都必须以编程方式执行此操作,并且我有点无意中如何做到这一点。从其他示例来看,我想我会创建一个NSArrayController并以某种方式将它们绑定在一起。

另外,我想让它适用于较旧的MacOSX,所以我想我必须使用基于单元格的NSTableView,无论这意味着什么。

数据源是静态的,不可编辑,即我只能提供带有数据的NSArray。

2 个答案:

答案 0 :(得分:0)

使用NSTableViews有三种方法:1)委托方法; 2)NSArrayController;或3)绑定。我最好的建议是在尝试在python中执行此操作之前,首先在Cocoa ObjC项目中学习Xcode中的所有这三个。注意:我还建议您首先通过笔尖学习如何执行这些操作,然后找出如何以编程方式执行此操作(再次在Cococa ObjC项目中使用Xcode,然后再在python中尝试)。

如果您了解Interface Builder(在Xcode 4中查看,app pre-Xcode4)绑定是如何工作的,那么对于以下代码“Bind To”对应myController,“Controller Key”将是“selection”,并且Model Key Path将是“fullPath”。

[myView bind:@“valuePath”            toObject:myController            withKeyPath:@“selection.fullPath”            选项:nil];

答案 1 :(得分:0)

您只需要对数组进行一次排序,然后在调用委托方法时访问数组中的相应索引。

你真的应该好好阅读Table View Programming Guide