可可设计:如何在NSCollectionView中突出显示员工的当前部门?

问题描述

| 我有这个核心数据支持数据库,其中包含许多员工示例中的条目: 员工可以属于部门。一个部门有很多员工。 我有一个带有所有员工的NSTableView(由NSArrayController支持)。我有一个NSCollectionView(由设置为selection.possibleDepartments的NSArrayController支持)向我显示所选雇员的可能部门。
*DDEmployee               
 name
 image
 -----
 possibleDepartments <<------ 
 selectedDepartment <<--     |
                        |    |
*DDDepartment           |    |
 name                   |    |
 -----                  |    |
 employees          <---     |
 possibleEmployees <<--------
我想强调一下员工当前所在的部门 简单吧? 我怎么知道当前选择的部门是什么?我创建了具有\“-(BOOL)isThisTheSelectedDepartment \”的部门类(DDDepartment)的类别。在此函数中,我调用应用程序委托给我主阵列控制器。主阵列控制器为我提供了选定的员工。我问选择的雇员这是他的部门。 图像很少,其隐藏属性绑定到presentationObject.isThisTheSelectedDepartment并取反。这不会更新NSCollectionView(显然是:P) 有没有办法用绑定来做到这一点? 谢谢     

解决方法

如果要使用绑定,可以将NSObjectController添加到笔尖。然后在对象控制器上,使用键路径@ \“ selectedDepartment \”将其内容绑定到雇员数组控制器中的选择。该对象控制器将始终包含所选员工的部门。 对于DDDepartment,向其添加BOOL \“ isSelected \”属性。 创建NSObjectController的子类。将您在第1部分中创建的NSObjectController设置为具有其类的子类。现在在子类中重写-(void)setContent:(id)content为:
- (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方法。这应该为您做好一切准备,并在您选择员工或更改员工部门时使部门选择发生变化。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...