我已经在这个主题上杀了一天,但仍然不知道如何以正确的方式完成此操作。将单个NSCell绑定到多个值
我正在使用NSOutlineView
来显示文件系统层次结构。对于第一列中的每一行,我需要显示复选框,关联图标和文件或目录的名称。由于没有标准的方法来做到这一点,我已经使用SourceView和PhotoSearch示例分类NSTextFieldCell
,绑定value
IB到我的树项目类name
属性虽然NSTreeController
。我使用drawWithFrame:inView:
覆盖来绘制复选框和图像,将文本绘制转发到super
。我也使用trackMouse:inRect:ofView:untilMouseUp:
覆盖来处理复选框交互。
一切都很好,直到我注意到,当我按下鼠标按键时我自定义的细胞内,细胞对象被复制与copyWithZone:
这个临时对象,然后发送一个trackMouse:inRect:ofView:untilMouseUp:
消息,使得它不可能修改的检查状态原始细胞驻留在视图中。
由于问题的主题是关于绑定,我认为这可能是答案,但我完全没有得到如何连接所有这些混乱功能如预期。试过这个:
[[[treeView outlineTableColumn] dataCell] bind:@"state"
toObject:treeController
withKeyPath:@"selection.state"
options:nil];
但没有成功。似乎我没有得到它。
这可能是我采取的完全错误的方式吗?你能否提出一个更好的选择或任何链接进一步阅读?
UPD 11年1月21日:我也试过这样:
[[[treeView outlineTableColumn] dataCell] bind:@"state"
toObject:treeController
withKeyPath:@"arrangedObjects.state"
options:nil];
但一直得到类似的错误“[< _NSControllerTreeProxy为0x ...> valueForUndefinedKey:]:此类不是关键状态的密钥值编码。“和类似的。
是啊,这就是我的意思讲`value`-`name`首先结合:我已经有`arrangedObjects.name`结合`value`所以我不能将它同时绑定到`arrangedObjects.state`(并且在我可以使用的列中没有`state`绑定)。那可能怎么样? – 2011-01-21 05:46:10