0

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

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

另外,我想让它在旧的 MacOSX 上运行,所以我想我必须使用基于单元的 NSTableView,不管这意味着什么。

数据源将是静态的并且不可编辑,即我可以只提供一个带有数据的 NSArray。

4

2 回答 2

0

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

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

于 2012-11-15T23:55:30.803 回答
0

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

如果您了解 Interface Builder(在 Xcode 4 中查看,Xcode4 之前的应用程序)绑定是如何工作的,那么对于以下代码,“Bind To”对应于 myController,“Controller Key”将是“selection”,而 Model Key Path 将是“完整路径”。

[myView 绑定:@“valuePath”toObject:myController withKeyPath:@“selection.fullPath”选项:无];

于 2012-11-06T15:55:27.057 回答