Swift 在右键单击弹出的NSTableCellView中添加NSMenu
当用户右键单击Swift 在右键单击弹出的NSTableCellView中添加NSMenu,swift,nstableview,nsmenu,nsmenuitem,nstablecellview,Swift,Nstableview,Nsmenu,Nsmenuitem,Nstablecellview,当用户右键单击NSTableView中的NSTableCellView时,我想弹出一个NSMenu let cell = myTableView.make(withIdentifier: "myCustomTableCellView", owner: self) as! MyTableCellView // subclass of NSTableCellView let menu = NSMenu() menu.autoenablesItems = false menu.addItem(NSM
NSTableView
中的NSTableCellView
时,我想弹出一个NSMenu
let cell = myTableView.make(withIdentifier: "myCustomTableCellView", owner: self) as! MyTableCellView // subclass of NSTableCellView
let menu = NSMenu()
menu.autoenablesItems = false
menu.addItem(NSMenuItem(title: "Test", action: nil, keyEquivalent: ""))
cell.menu = menu
但是,如果用户单击单元格,则不会弹出菜单
我找不到任何sendActionOn
方法或类似的方法
如果有人能帮忙,那就太好了 不需要做任何花哨的事。您可以在Interface Builder中设计菜单
菜单
从对象库拖动到视图控制器表格视图拖动到此菜单,并将其连接到菜单
出口
视图控制器中的iActions
连接:
@IBAction func menuAction1(_ sender: Any) {
print("You clicked Item 1 for row \(self.tableView.selectedRow)")
}
@IBAction func menuAction2(_ sender: Any) {
print("You clicked Item 2 for row \(self.tableView.selectedRow)")
}
@IBAction func menuAction3(_ sender: Any) {
print("You clicked Item 3 for row \(self.tableView.selectedRow)")
}
非常感谢。它基本上是有效的,但这样一来,TableView中的每种类型的TableCellView都有该菜单。我的问题是如何将NSMenu(以编程方式)添加到特定的TableCellView?虽然这在显示菜单时起作用,但右键单击不会触发tableview上的行选择,因此
self.tableview.selectedRow
始终将是-1
,除非该行是由normal(左)预先选择的首先单击。应使用self.tableView.clickedRow
获取单击的行。