我有一个NSOutlineView,当双击大纲视图中的一行时,使用以下代码显示NSPopover:
-(void)doubleClick:(id)nid{
NSLog(@"Test double click");
[_popover showRelativeToRect:[nid bounds] ofView:nid preferredEdge:NSMaxXEdge];
}
代码工作正常,但将popover放在大纲视图垂直高度的中间。我希望弹出窗口出现在大纲视图中选中(双击)的行旁边。我可以调用大纲视图来返回所选行的位置吗?我似乎无法在文档中找到这样的方法。显然我会替换这样一个电话的[nid bounds]。另外,任何其他关于如何解决这个问题的建议都将不胜感激。
答案 0 :(得分:0)
不要忘记NSOutlineView
继承自NSTableView
。您正在寻找-frameOfCellAtColumn:row:
。该列可能为0.您可以使用-selectedRow
获取该行。
如果您的大纲视图是基于视图的,您还可以将矩形的行视图(-rowViewAtRow:makeIfNecessary:
)和NSZeroRect
传递给-showRelativeToRect:...
,以便它自动跟踪该行。< / p>