0

我有这个核心数据支持的数据库,其中包含许多员工示例中的条目:员工可以属于一个部门。一个部门有很多员工。我和所有员工都有一个 NSTableView(由 NSArrayController 支持)。我有一个 NSCollectionView(由设置为 selection.possibleDepartments 的 NSArrayController 支持)显示所选员工的可能部门。

*DDEmployee               
 name
 image
 -----
 possibleDepartments <<------ 
 selectedDepartment <<--     |
                        |    |
*DDDepartment           |    |
 name                   |    |
 -----                  |    |
 employees          <---     |
 possibleEmployees <<--------

我想突出显示该员工目前所在的部门

简单吧?

我怎么知道当前选择的部门是什么?我创建了一个具有“-(BOOL)isThisTheSelectedDepartment”的部门类 (DDDepartment) 的类别。在这个函数中,我调用应用程序委托给我主数组控制器。主阵列控制器给了我选定的员工。我问选定的员工这是否是他的部门。图像很少,它的隐藏属性绑定到representedObject.isThisTheSelectedDepartment 并取反。这不会更新 NSCollectionView (显然:P)有没有办法通过绑定来做到这一点?

谢谢

4

1 回答 1

0

如果你想用绑定来做,你可以添加一个 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 方法。这应该会为您处理好所有事情,并导致在您选择员工或更改员工的部门时更改部门选择。

于 2011-04-15T21:59:41.873 回答