右键单击 TableViewCell 时显示 popOver
Show popOver when right click on TableViewCell
我有一个 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 会显示在右行,但仅当我单击第一行时才会再次显示。
我有点困惑。我的代码有什么问题?
好的,我想我找到了答案。 tableView.rectOfRow(row)
为假。 cell.frame
是获取 NSRec
的正确方法
我有一个 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 会显示在右行,但仅当我单击第一行时才会再次显示。
我有点困惑。我的代码有什么问题?
好的,我想我找到了答案。 tableView.rectOfRow(row)
为假。 cell.frame
是获取 NSRec