swift - 将 NSMenu 添加到右键单击弹出的 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(NSMenuItem(title: "Test", action: nil, keyEquivalent: ""))

cell.menu = menu

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

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

如果有人能提供帮助就太好了!

最佳答案

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

  1. 将对象库中的 Menu 拖到 View Controller 中
  2. 按住 Ctrl 键从 Table View 拖动到此菜单并将其连接到 menu socket

Connect Table View to Menu

  1. 将菜单项与 View Controller 中的 IBActions 连接:

假设您的右键单击菜单上有 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)")
}

关于swift - 将 NSMenu 添加到右键单击弹出的 NSTableCellView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41903833/

相关文章:

ios - 来自两个字符串数组的 double 组

cocoa - 如何在具有多个排序描述符的列上设置指示图像?

swift - 准确获取 NSTextField 包装大小 (Swift)

cocoa - 主线程 Runloop 在打开 nsmenu 时被阻止

Swift:将实用程序方法创建为静态类或常规函数?

swift - 快速点击删除标记

iphone - 过滤不是来 self 的应用程序的 HKSample 数据

cocoa - NSTableView 与自定义 NSColumnHeaderCell

SwiftUI:如何在 macOS 应用程序中实现编辑菜单

objective-c - NSMenuItem 高度?