我有一个NSTableView,如果用户右键单击一行,则想显示一个popOver。所以我有这个功能:
override func rightMouseDown(theEvent: NSEvent) {
super.rightMouseDown(theEvent)
var point: NSPoint = talbeView.convertPoint(theEvent.locationInWindow, fromView: nil)
var row = tableView.rowAtPoint(point)
var rec = tableView.rectOfRow(row)
let storyboard = NSStoryboard(name: "Main", bundle: nil)
let popOverViewController = storyboard!.instantiateControllerWithIdentifier("RightMousPopOver") as! NSViewController
var cell: DocumentCellView = tableView.viewAtColumn(0, row: row, makeIfNecessary: true) as! DocumentCellView
self.presentViewController(popOverViewController, asPopoverRelativeToRect: rec, ofView: cell, preferredEdge: 2, behavior: NSPopoverBehavior.Transient)
}
但是只有当我右键单击第一行时才会出现popOver。我已调试行及其右侧。此外,如果我更改行manuelle,popOver显示在右侧行,但只有当我点击第一行时才会显示。
我有点困惑。我的代码出了什么问题?答案 0 :(得分:0)
好的,我想我找到了答案。 tableView.rectOfRow(row)
是假的。 cell.frame
是获取NSRec的正确方法