NStreeController - NSoutlineView获取单元格绑定对象

时间:2013-12-30 05:55:26

标签: objective-c cocoa-bindings nsoutlineview nstreecontroller

我在NSoutlineView中有以下情况:

ParentObject            [checkbox]
  - ChildObject 1       [checkbox]
  - ChildObject 2       [checkbox]

每个复选框都有一个绑定设置为NSTreeController中相应对象的bool值。当用户选择parentObject复选框时,还应设置相应的子复选框。但是,如果设置了子对象复选框,则不应影响父复选框。我似乎无法让父功能正常工作。

我目前尝试解决的问题是: 设置复选框后,调用:

-(IBAction)CheckSelected:(NSButtonCell *)sender 
 {
     // Somehow access the cells bound object in the NSTreeController ?????
 }

然而,根据我的研究,我无法找到一种方法来访问NSTreeController中单元格的相应对象。

对此问题的任何见解将不胜感激。我觉得这是一个常见的问题,人们会遇到使用NStreeController,我很好奇,如果我采取正确的方法。

谢谢:)

1 个答案:

答案 0 :(得分:1)

不应将复选框设置为调用操作 - 它们应绑定到属性,例如“isChecked”。

在您的ParentObject中,您将拥有类似于以下内容的代码:

- (void)setIsChecked:(BOOL)isChecked;
{
    _isChecked = isChecked;
    for (ChildObject *childObject in self.children)
        childObject.isChecked = isChecked;
}

由于子项的复选框也被绑定,子项的新状态将立即反映在大纲视图中。