我想知道如何实现一个大纲视图,就像 Xcode 3 用于构建配置的那样:
当使用带有绑定的 NSOutlineView/NSTableView 和 NSTreeController/NSArrayController 时,由于显而易见的原因,视图的列将绑定分配给,而不是单个单元格。如果一列中的每一行都使用相同的单元格,那么它就是小菜一碟。但是,如果每一行(可能)使用自己的单元格类型(并且可能使用它自己的绑定集合),那么事情就会变得很奇怪。
查看屏幕截图可以清楚地看到文本字段单元格只需要一个“值”绑定。而弹出按钮单元格至少需要一个用于“ content ”,一个用于“ contentValues ”,最后但并非至少一个绑定用于“ selectedIndex / selectedObject / selectedValue ”。复选框单元格需要一个“值”绑定和(可能)一个“标题”绑定。
如何使用尽可能干净(和少)的代码来实现这一点?
(或者有人可能会问: Apple 是如何做到的?)
…
到目前为止,这是我自己尝试过的:我通过[outlineView:dataCellForTableColumn:item:]
提供适当的(复制的)单元格,并将它们绑定到各个数据模型(来自 [item代表对象])。我知道大纲视图中显示的确切数据量(< 500 行),所以每行有一个单元格不应该是太多的内存问题,不是吗?我通过绑定(耶!)获得了正确显示的数据,但是我无法更改它们的任何值。O_o 显然,值的变化永远不会通过数据模型。除了简单的[checkboxCell bind:@"value" toObject:rowModel withKeyPath:@"value" options:nil]之外,还有更多的功能吗?(因为这似乎足以让值,但不适用于相应地设置它们。)
我找不到有关此主题的任何信息。每列使用自定义单元格的大量信息和提示,但没有以“每行”为基础使用它们。:(
这将为 Cocoa 教程提供一些很棒的东西,不是吗?;)