#selector在NSMenuItem中看不到我自己创建的方法

问题描述 投票:1回答:1

我有一个问题创建一个NSMenuItem动作,我创建了函数,它为我创建菜单,而在NSMenuItem与选择器上使用init,我描述的函数不适用于swift 4,如果我使用NSApp.terminate - NSMenuItem看到选择器正常工作( )...这是代码:

mainMenuController: NSObject {
  func setUpMenus(){
  //...
  let firstItemMainMenu = NSMenuItem.init(title: "Test", action: #selector(test), keyEquivalent: "") // This one doesn't work
  let fourthItemMainMenu = NSMenuItem.init(title: "Quit", action: #selector(NSApp.terminate), keyEquivalent: "q") //This one NSApp.terminate - works
  //...
}

这是功能:

@objc func test(_ sender: Any?){
    let alert = NSAlert()
    alert.addButton(withTitle: "test")
    alert.messageText = "test"
    alert.runModal()
  }
}

有任何想法吗?

swift macos swift4
1个回答
0
投票

两个建议:

  1. 使用语法Selector("terminate:")将选择器交给First Responder(您将收到使用#selector语法的警告)
  2. 创建一个额外的方法@objc func quit,它调用NSApp.terminate
© www.soinside.com 2019 - 2024. All rights reserved.