0

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

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

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

4

1 回答 1

0

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

如果您的大纲视图是基于视图的,您还可以将行视图 ( -rowViewAtRow:makeIfNecessary:) 和NSZeroRectrect 传递给-showRelativeToRect:...,因此它会自动跟踪行。

于 2014-08-31T03:30:15.417 回答