0

Apple OS x 開発者ライブラリで cocoa のアウトラインビューを学んでいます。ソースの例は次のようになります。

- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item {
    return (item == nil) ? [FileSystemItem rootItem] : [(FileSystemItem *)item       childAtIndex:index];
}

- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
    return (item == nil) ? YES : ([item numberOfChildren] != -1);
}

- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
    return (item == nil) ? 1 : [item numberOfChildren];
}

- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
    return (item == nil) ? @"/" : [item relativePath];
}

これにより、システム内のすべてのファイルがツリーのように一覧表示されます。問題は次のとおり
です。1.「/」の下に32個のファイルがある場合、メソッド

- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item 

62 回呼び出されますが、理由がわかりません。
2.方法

- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item 

行に関するパラメーターがない場合、ココアがどの行にアイテムを表示するかを決定する方法は?

4

1 に答える 1

1
  1. 「/」の下に32個のファイルがある場合、メソッド

    • (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item

表示される行と列ごとに呼び出されます。2 つの列があり、実際には 31 行が表示されていると仮定します

  1. メソッドには行に関するパラメーターがありません。次に、ココアがアイテムを表示する行を決定する方法は?

item、テーブルへの入力に使用されるオブジェクトへのポインタです。これは、NSOutlineViewDataSource Protocol知る必要があるすべてです。内部に表示される行の詳細NSOutlineView

于 2012-07-11T06:54:51.740 に答える