NSTableView添加Menu

642 阅读1分钟

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