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

发布于 2024-12-12 12:14:04 字数 218 浏览 0 评论 0原文

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

按住 Control 单击会调出我的菜单,单击的行将被“选中”,并带有边框的浅色突出显示。

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

I have a NSOutlineView controlled by a NSTreeController.
NSOutlineView is connected to a Contextual Menu in Interface Builder.

Control Click brings up my Menu, and the row clicked on is "selected" with a pale highlight with a border.

I can't seem to find any way to find which row is "selected".
selectionIndexPath and selectedObjects are nil.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

抚你发端 2024-12-19 12:14:04

您想要使用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];
}

You want to use clickedRow. Note that this becomes a bit more complicated if you support multiple selection, because the selection gets targeted by the shortcut menu if the clicked row is within it, whereas if you click elsewhere, the (single) clicked row is the target and the selection is ignored.

Here's an example of some code I wrote to handle this:

- (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];
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文