gpt4 book ai didi

cocoa - 展开项目时 NSOutlineView 行索引发生变化

转载 作者:行者123 更新时间:2023-12-03 18:02:27 25 4
gpt4 key购买 nike

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

a的数据源中,我试图获取b所有选定项目的父项目。在行号中。 arowIndex 我想要选择 b 的第 rowIndex 我想将此字符串连接到该项目的父项的名称。例如,a:

  • 1 和 1.1
  • 2

b:

  • 1
    • 1.1(已选择)
  • 2(已选择)
  • 3

这是 - (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex of 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]] 始终返回最后一个展开的项目。

我正在尝试获得所选项目及其 parent 的列表。当我展开某个项目时,所有项目都将其父项更改为最后展开的项目

我做错了什么吗?

提前谢谢您。

最佳答案

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

The NSIndexPath class represents the path to a specific node in a tree of nested array collections. This path is known as an index path.

关于cocoa - 展开项目时 NSOutlineView 行索引发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4984436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com