0

NSURL オブジェクトのリストを入力したい NSOutlineView があります。私はこれを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 に答える