假设我有一个NSTableView(例如,a
)和一个NSOutlineView(例如,b
)。
在a
的数据源中,我正在尝试获取b
所有选定项目的父项。在行中没有。 rowIndex
的{{1}}我想要a
和{/ em> rowIndex
选中的项目我想将此字符串连接到名称这个项目的父项。例如,b
:
a
:
这是b
的{{1}}。
- (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;
。
我做错了吗?
提前谢谢。
答案 0 :(得分:1)
您发现,不能使用简单的整数来表示嵌套数据集中的索引。相反,您需要使用NSIndexPath。正如文档所说:
NSIndexPath类表示 树的特定节点的路径 嵌套数组集合。这条路是 称为索引路径。