问题描述
我想实现的东西,应该是简单而相当普遍:具有填充NSPopupButton内填充NSTableView的绑定一个绑定。 苹果介绍了本作在其文档中基于细胞的表实现一对一的关系中使用弹出式菜单 ,它看起来是这样的:
我不能让这一个视图基于表格的工作。 “作者”弹出窗口将不会填充自身,无论我做什么。
我有两个阵列控制器,一个为表中的项目( 产品 ),一个是作家( 作者 ),都在我的核心数据模型的各个实体相关联。 我绑定NSManagedPopup在我的小区在Interface Builder如下:
- 内容 - > 作者 (控制键:arrangedObjects)
- 含量值 - > 作者 (控制键:arrangedObjects,型号主要路径: 名 )
- 选定对象 - > 表格单元格视图 (型号主要路径:objectValue.author
如果我某个地方在弹出的表格外,它工作正常(除了明显的选择),所以我想绑定的设置应该没问题。
事情我已经尝试
有人提出了一个使用一个IBOutlet属性的解决方法给作者阵列控制器,但是这似乎并没有为我工作的。
在另一个SO问题建议还是继承NSTableCellView和编程建立所需的连接。 我试过,但收效甚微。
如果我设置的绑定,如下所示:
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { NSView *view = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self]; if ([tableColumn.identifier isEqualToString:@"Author") { AuthorSelectorCell *authorSelectorCell = (AuthorSelectorCell *)view; [authorSelectorCell.popupButton bind:NSContentBinding toObject:self.authors withKeyPath:@"arrangedObjects" options:nil]; [authorSelectorCell.popupButton bind:NSContentValuesBinding toObject:self.authors withKeyPath:@"arrangedObjects.name" options:nil]; [authorSelectorCell.popupButton bind:NSSelectedObjectBinding toObject:view withKeyPath:@"objectValue.author" options:nil]; } return view; }
弹出确实显示出可能的作者的名单,但当前的选择总是显示为“没有价值”。 如果我添加
[authorSelectorCell.popupButton bind:NSSelectedValueBinding toObject:view withKeyPath:@"objectValue.author.name" options:nil];
当前的选择完全是空的。 使当前选择显示出来的唯一方法是通过设置
[authorSelectorCell.popupButton bind:NSSelectedObjectBinding toObject:view withKeyPath:@"objectValue.author.name" options:nil];
这会尽快打破我选择不同的作者,因为它会尝试分配
NSString*
到Author*
属性。
有任何想法吗?