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

时间:2018-03-02 15:48:31

标签: swift macos swift4

我在创建NSMenuItem操作时遇到问题,我创建了一个函数,它为我创建了Menu,在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()
  }
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

两个建议:

  1. 使用将选择器交给Selector("terminate:")的语法First Responder(您将收到使用#selector语法的警告)
  2. 创建一个名为@objc func quit
  3. 的额外方法NSApp.terminate