将一个 NSMenu 添加到一个 NSTableCellView 中,它会在右键单击时弹出

ixa*_*any 4 nsmenu nstableview nsmenuitem nstablecellview swift

我想NSMenu在用户右键单击 aNSTableCellView中的a时弹出a NSTableView

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
Run Code Online (Sandbox Code Playgroud)

但是如果用户单击单元格,则不会弹出菜单。

我找不到任何sendActionOn方法或类似的东西。

如果有人可以提供帮助,那就太好了!

Cod*_*ent 7

不需要做任何花哨的事情。您可以在 Interface Builder 中设计您的菜单。

  1. Menu对象库中的a拖到您的视图控制器
  2. 按住 Ctrl 键从 拖到Table View此菜单并将其连接到menu插座

将表视图连接到菜单

  1. 将菜单项与IBActions您的View Controller:

假设您的右键单击菜单上有 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)")
}
Run Code Online (Sandbox Code Playgroud)

  • 应该使用 `self.tableView.clickedRow` 来获取被点击的行。 (4认同)