0

NSTableView (例: a) と NSOutlineView (例: b) があるとします。

のデータソースでa、 の選択されたすべてのアイテムの親アイテムを取得しようとしていますb。行番号で。rowIndexofarowIndexth 番目に選択されたアイテムが必要で、この文字列をこのアイテムの親の名前に連結b たいと考えています。たとえば、a次のとおりです。

  • 1と1.1
  • 2

そしてb

  • 1
    • 1.1 (選択済み)
  • 2 (選択済み)
  • 3

これは- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndexのですa

NSUInteger index = [[outlineView selectedRowIndexes] firstIndex];

for (NSUInteger i = 0, target = rowIndex; i < target; i++)
    index = [[outlineView selectedRowIndexes] indexGreaterThanIndex:index];

NSLog(@"%@", [outlineView [outlineView itemAtRow:index]]);

if([outlineView parentForItem:[outlineView itemAtRow:index]] != NULL) {
    return [NSString stringWithFormat:@"%@ %@", [outlineView parentForItem:[outlineView itemAtRow:index]], [outlineView itemAtRow:index]]; 
} else {
    return [outlineView itemAtRow:index];
}

return NULL;

問題は、アイテムを展開すると、[outlineView parentForItem:[outlineView itemAtRow:index]]常に最後に展開されたアイテムが返されることです。

選択したアイテムとその親のリストを取得しようとしています。アイテムを展開すると、すべてのアイテムの親が に変わりますlast expanded item

私は何か間違ったことをしていますか?

前もって感謝します。

4

1 に答える 1

1

ご存知のように、単純な整数を使用して、ネストされたデータ セットのインデックスを表すことはできません。代わりにNSIndexPathを使用する必要があります。ドキュメントにあるように:

NSIndexPath クラスは、ネストされた配列コレクションのツリー内の特定のノードへのパスを表します。このパスはインデックス パスと呼ばれます。

于 2011-04-05T14:47:33.450 に答える