Cocoa NSOutlineView行索引在展开项时更改

Cocoa NSOutlineView行索引在展开项时更改,cocoa,nsoutlineview,Cocoa,Nsoutlineview,假设我有一个NSTableView(例如,a)和一个NSOutlineView(例如,b) 在a的数据源中,我试图获取b的所有选定项的父项。在a的行号rowIndex中,我希望将rowIndex作为b的第个选定项,并将此字符串连接到此项父项的名称。例如,a: 1和1.1 二, 和b: 一, 1.1(选定) 2(选定) 三, 这是的-(id)tableView:(NSTableView*)aTableView objectValueForTableColumn:(NSTableColu

假设我有一个NSTableView(例如,
a
)和一个NSOutlineView(例如,
b

a
的数据源中,我试图获取
b
的所有选定项的父项。在
a
的行号
rowIndex
中,我希望将
rowIndex
作为
b
的第个选定项,并将此字符串连接到此项父项的名称。例如,
a

  • 1和1.1
  • 二,
b

  • 一,
    • 1.1(选定)
  • 2(选定)
  • 三,
这是
-(id)tableView:(NSTableView*)aTableView objectValueForTableColumn:(NSTableColumn*)aTableColumn行:(NSInteger)行索引
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;
NSUInteger index=[[outlineView selectedRowIndexes]firstIndex];
for(整数i=0,目标=rowIndex;i
问题是,当我展开一个项目时,
[outlineView parentForItem:[outlineView itemAtRow:index]
总是返回最后一个展开的项目

我正在尝试列出所选项目及其家长。展开项目时,所有项目都将其父项更改为上次展开的项目

我做错什么了吗


提前感谢。

您发现,不能使用简单的整数来表示嵌套数据集中的索引。相反,您需要使用。正如文件所说:

nsindepath类表示 目录树中特定节点的路径 嵌套数组集合。这条路是 称为索引路径


非常感谢。这就是我需要的。