我有一个由NSTreeController控制的NSOutlineView。 NSOutlineView连接到Interface Builder中的上下文菜单。
控制点击会弹出我的菜单,点击的行被“选中”,带有带边框的浅色高光。
我似乎找不到任何方法来查找哪个行被“选中”。 selectionIndexPath和selectedObjects为nil。
答案 0 :(得分:3)
您想使用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];
}