我在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,我很好奇,如果我采取正确的方法。
谢谢:)
答案 0 :(得分:1)
不应将复选框设置为调用操作 - 它们应绑定到属性,例如“isChecked”。
在您的ParentObject中,您将拥有类似于以下内容的代码:
- (void)setIsChecked:(BOOL)isChecked;
{
_isChecked = isChecked;
for (ChildObject *childObject in self.children)
childObject.isChecked = isChecked;
}
由于子项的复选框也被绑定,子项的新状态将立即反映在大纲视图中。