如何使用绑定在基于NSTableView的视图中启用/禁用编辑?

时间:2014-10-02 15:40:25

标签: cocoa binding nstableview nstextfield

我无法想象一种在使用cocoa绑定的基于视图的NSTableViews中启用/禁用编辑的方法。 我的意思是,我可以完全启用/禁用单独的 NSTextField中的编辑,方法是将其“可编辑”属性绑定到文件的所有者属性,例如

@property BOOL canModify;

(绑定到:文件的所有者) (模型关键路径:self.canModify)

但是,如果我在基于视图的TableView中对NSTextField执行完全相同的操作,则绑定似乎完全被忽略。 另外需要注意的是,我可以通过绑定/数组控制器来填充表格,因此很奇怪这些东西不仅仅适用于“可编辑”属性。 提前谢谢

2 个答案:

答案 0 :(得分:3)

没有。 Apple为tablecellviews实现File的所有者绑定没有问题。我只是忽略了一个IB警告。 “......基于视图的单元格内的对象可能只能连接到tableview的委托。” 我确实将TableView的“委托”插座设置为我的WindowController(实现“委托协议”),一切正常,没有任何双重双重传递超过表格Cell的objectValues。

答案 1 :(得分:0)

您的财产名称和绑定的关键路径不匹配,但可能只是一个错字:canModifycanModyfy("我" vs." y")。

editable绑定应该可以正常工作。您应该检查其他绑定,例如value绑定,以查看它是否启用了“条件集可编辑”绑定选项。令人讨厌的是,默认情况下启用此选项。

最后,您还没有解释您在哪个NIB中定义了您的单元格视图。它们是否与表视图本身在同一个NIB中定义,还是在单独的NIB中?这会影响哪个对象是文件的所有者。

即使在与表视图相同的NIB内定义表单元视图,我相信它们也被编码为NIB内的NIB。也就是说,每个表格单元视图子层次实际上被编码为NIB blob,并且该NIB blob被存档到父NIB中。加载表格单元视图子NIB时,表视图的委托通常作为其所有者提供。因此,绑定到File的所有者可能没有您期望的效果。

对于表格单元格视图,通常将子视图(如NSTextField)绑定到表格单元格视图本身,并以objectValue属性为键。