NSTableView本身有menu属性可以直接设置,但是这样会有造成点击空白区域menu也会相应,所以需要修改NSTableView的menu属性:
class TableListView: NSTableView {
weak var tableMenu: NSMenu?
open override func menu(for event: NSEvent) -> NSMenu? {
let pt = self.convert(event.locationInWindow, to: nil)
let row = self.row(at: pt)
if row >= 0 {
return self.tableMenu
}
return super.menu(for: event)
}
}
复制代码
使用:
@IBOutlet var tMenu: NSMenu!
@IBOutlet weak var tableView: TableListView!
tableView.tableMenu = tMenu
复制代码