1

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

Control Click 调出我的菜单,点击的行被“选中”,带有一个带有边框的苍白突出显示。

我似乎找不到任何方法来找到“选择”哪一行。selectionIndexPath 和 selectedObjects 为零。

4

1 回答 1

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];
}
于 2012-01-23T01:37:44.270 回答