我有一个由 NSTreeController 控制的 NSOutlineView。NSOutlineView 连接到 Interface Builder 中的上下文菜单。
Control Click 调出我的菜单,点击的行被“选中”,带有一个带有边框的苍白突出显示。
我似乎找不到任何方法来找到“选择”哪一行。selectionIndexPath 和 selectedObjects 为零。
我有一个由 NSTreeController 控制的 NSOutlineView。NSOutlineView 连接到 Interface Builder 中的上下文菜单。
Control Click 调出我的菜单,点击的行被“选中”,带有一个带有边框的苍白突出显示。
我似乎找不到任何方法来找到“选择”哪一行。selectionIndexPath 和 selectedObjects 为零。
你想用clickedRow
. 请注意,如果您支持多选,这会变得有点复杂,因为如果单击的行在其中,则选择将成为快捷菜单的目标,而如果您单击其他地方,则(单个)单击的行是目标,并且选择是忽略。
这是我为处理此问题而编写的一些代码示例:
- (NSArray *)selectedURLs;
{
NSInteger clickedRow = [outlineView clickedRow];
NSArray *selectedObjects;
if (clickedRow == -1 || [[outlineView selectedRowIndexes] containsIndex:clickedRow])
selectedObjects = [treeController selectedObjects];
else
selectedObjects = [NSArray arrayWithObject:[[outlineView itemAtRow:clickedRow] representedObject]];
return [selectedObjects valueForKey:SSTreeNodeAttributes.fileReferenceURL];
}