返回NSOutlineView中所选行的位置

时间:2014-08-31 01:10:41

标签: macos cocoa nsoutlineview nspopover

我有一个NSOutlineView,当双击大纲视图中的一行时,使用以下代码显示NSPopover:

-(void)doubleClick:(id)nid{
    NSLog(@"Test double click");
    [_popover showRelativeToRect:[nid bounds] ofView:nid preferredEdge:NSMaxXEdge];
}

代码工作正常,但将popover放在大纲视图垂直高度的中间。我希望弹出窗口出现在大纲视图中选中(双击)的行旁边。我可以调用大纲视图来返回所选行的位置吗?我似乎无法在文档中找到这样的方法。显然我会替换这样一个电话的[nid bounds]。另外,任何其他关于如何解决这个问题的建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

不要忘记NSOutlineView继承自NSTableView。您正在寻找-frameOfCellAtColumn:row:。该列可能为0.您可以使用-selectedRow获取该行。

如果您的大纲视图是基于视图的,您还可以将矩形的行视图(-rowViewAtRow:makeIfNecessary:)和NSZeroRect传递给-showRelativeToRect:...,以便它自动跟踪该行。< / p>