为什么NSOutlineView在我要在大纲视图中显示的NSURL对象上调用-indexPath?

时间:2011-05-29 17:12:39

标签: nsurl nsoutlineview

我有一个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]。任何人都知道为什么要调用此方法或如何解决它?

1 个答案:

答案 0 :(得分:1)

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

我认为此绑定旨在与 NSTreeController 结合使用。至少当我有一个时它工作正常。目前,我能找到的唯一解决方案是避免使用绑定或将其与NSTreeController一起使用。