0

我有一个 NSOutlineView,我想用 NSURL 对象列表填充它。我在 NSTableView 中有这个工作。作为转向 NSOutlineView 的第一步(这样我可以根据用户的需要按各种标准对 NSURL 对象进行分组),我以一种应该模仿表格视图的方式实现了 NSOutlineViewDataSource 协议的最小方法:

- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
  if(!item) return [[self.resultsArrayController arrangedObjects] count];
  return 0;
}
- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item {
  if(!item){
    return [[self.resultsArrayController arrangedObjects] objectAtIndex:index];
  }
}
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
  return [item valueForKey:[tableColumn identifier]];
}
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
  return NO;
}

这不断抛出一个无法识别的选择器异常,显示[NSURL indexPath]正在被调用。任何人都知道为什么要调用此方法或如何解决它?

4

1 回答 1

1

我不确定这是你的情况,但是当我将大纲的选择索引路径绑定到我的控制器时,我遇到了与 NSOutlineView 完全相同的问题。之后,每次我选择一个项目时,NSOutlineView 都会尝试查询项目的indexPath方法。

我想这个绑定打算与NSTreeController结合使用。至少当我有一个时它工作得很好。目前,我能找到的唯一解决方案是完全避免使用绑定或将其与 NSTreeController 一起使用。

于 2011-07-18T09:05:27.920 回答