Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 在右键单击弹出的NSTableCellView中添加NSMenu_Swift_Nstableview_Nsmenu_Nsmenuitem_Nstablecellview - Fatal编程技术网

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中设计菜单

  • 菜单
    从对象库拖动到视图控制器
  • Ctrl键从
    表格视图拖动到此菜单,并将其连接到
    菜单
    出口
  • 将菜单项与
    视图控制器中的
    iActions
    连接:
  • 假设右键单击菜单上有3个动作

    @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
    获取单击的行。