Swift NSMenu items are grey out

218 Views Asked by At

I have a menu with menu items. The problem is that my menu items are all greyed out or not enabled

public override init() {
  super.init()

  let menu = NSMenuItem(title: "Debug", action: nil, keyEquivalent: "")
  menu.submenu = NSMenu(title: "Debug")
  menu.submenu?.addItem(withTitle: "Load saved data", action: #selector(loadDataFromFile(_:)), keyEquivalent: "");
  menu.submenu?.addItem(withTitle: "another item", action: #selector(loadDataFromFile(_:)), keyEquivalent: "")
  menu.isEnabled = true
  
  NSApplication.shared.mainMenu?.addItem(menu)

}

 @objc func loadDataFromFile(_ sender: Any) {
      print("load it")
  }

1

There are 1 best solutions below

0
vadian On

To be able to call a custom selector in the current class you have to set the target of the menu item to self

let menu = NSMenuItem(title: "Debug", action: nil, keyEquivalent: "")
menu.submenu = NSMenu(title: "Debug")
let loadItem = NSMenuItem(title: "Load saved data", action: #selector(loadDataFromFile), keyEquivalent: "")
loadItem.target = self
let anotherItem = NSMenuItem(title: "another item", action: #selector(loadDataFromFile), keyEquivalent: "")
anotherItem.target = self
menu.submenu?.addItem(loadItem)
menu.submenu?.addItem(anotherItem)
menu.isEnabled = true