我有这个核心数据支持的数据库,其中包含许多员工示例中的条目: 员工可以属于某个部门。一个部门有很多员工。 我有一个NSTableView(由NSArrayController支持)与所有员工。我有一个NSCollectionView(由设置为selection.possibleDepartments的NSArrayController支持),它显示了所选员工的可能部门。
*DDEmployee
name
image
-----
possibleDepartments <<------
selectedDepartment <<-- |
| |
*DDDepartment | |
name | |
----- | |
employees <--- |
possibleEmployees <<--------
我想强调员工目前所在的部门
简单吧?
我如何知道当前所选部门的内容?我创建了一个部门类(DDDepartment)的类别,其中有“ - (BOOL)isThisTheSelectedDepartment”。在这个函数中,我调用app委托给我主阵列控制器。主阵列控制器为我提供了所选的员工。我问选定的员工这是否是他的部门。 有很少的图像和它的隐藏属性必然代表objectObject.isThisTheSelectedDepartment并否定。这不会更新NSCollectionView(显然:P) 有没有办法用绑定做到这一点?
由于
答案 0 :(得分:0)
如果你想用绑定做,你可以在你的笔尖添加一个NSObjectController。然后在对象控制器上将其内容绑定到employee数组控制器中的选择,并使用keypath @“selectedDepartment”。该对象控制器将始终包含所选员工的部门。
对于DDDepartment,向其添加BOOL“isSelected”属性。
创建NSObjectController的子类。设置在第1部分中创建的NSObjectController以获得其类的子类。现在在子类中覆盖 - (void)setContent:(id)内容为:
- (void)setContent:(id)content
{
[[self content] setIsSelected:NO]; // clear the flag on the current selection
[content setIsSelected:YES]; // set the flag on the new selection
[super setContent:content];
}
最后更改隐藏的绑定以绑定到isSelected属性而不是isThisTheSelectedDepartment方法。这应该为您处理所有事情,并在您选择员工或更改员工部门时更改部门选择。