如何在NSOutlineView中获得Control Click的目标

时间:2011-10-31 09:49:26

标签: nsoutlineview nstreecontroller

我有一个由NSTreeController控制的NSOutlineView。 NSOutlineView连接到Interface Builder中的上下文菜单。

控制点击会弹出我的菜单,点击的行被“选中”,带有带边框的浅色高光。

我似乎找不到任何方法来查找哪个行被“选中”。 selectionIndexPath和selectedObjects为nil。

1 个答案:

答案 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];
}