我正在尝试向NSPopover
的选定行显示NSTableView
以及其他信息。为此我需要获得对所选行的视图表示的引用,以便我可以“附加”我的popover到它:
NSInteger row = [[self membersTableView] selectedRow];
NSTableRowView *aView = [[self membersTableView] rowViewAtRow: row makeIfNecessary: YES];
[self setQuickLookPopoverController: [QuickLookPopoverController showPopoverFor: anObject at: aView]];
在上面,aView
的结果总是为零。根据{{3}},这是在给定选定行的情况下获取视图对象的方法。特别是讨论的最后一句话有点奇怪:
讨论此方法将首先尝试返回当前 显示在可见区域中的视图。如果没有可见的视图,和 makeIfNecessary为YES,返回准备好的临时视图。如果 makeIfNecessary为NO,并且视图不可见,nil将是 返回。
通常,如果您需要结果,makeIfNecessary应为YES view,如果您只想更新视图上的属性,则选择NO 它是可用的(通常这意味着它是可见的)。
如果row不在numberOfRows中,则抛出异常。该 返回的结果通常不应该持续超过 当前运行循环周期。最好打电话 rowViewAtRow:makeIfNecessary:每当需要视图时..
为什么这个方法总是返回nil?
答案 0 :(得分:1)
解决了它。我使用了NSTableView的方法(NSRect) rectOfRow: (NSInteger) rowIndex
,它将给出所需行的框架。
答案 1 :(得分:0)
感谢您向我展示正确的方向,我遇到了同样的问题!我最后做了以下操作,但请注意我禁用了空行的选择,并且以下代码位于IBAction
内:
[popOver showRelativeToRect:[sender bounds]
ofView:[sender rowViewAtRow:[sender selectedRow]
makeIfNecessary:YES]
preferredEdge:NSMaxXEdge];