右键单击TableViewCell时显示popOver

时间:2015-06-23 09:39:25

标签: macos swift nstableview popover

我有一个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显示在右侧行,但只有当我点击第一行时才会显示。

我有点困惑。我的代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

好的,我想我找到了答案。 tableView.rectOfRow(row)是假的。 cell.frame是获取NSRec的正确方法