【发布时间】:2018-03-02 15:48:30
【问题描述】:
我在创建 NSMenuItem 操作时遇到问题,我创建了为我创建菜单的函数,同时在 NSMenuItem 上使用带有选择器的 init 时,如果我使用 @,我描述的函数在 swift 4 上不起作用987654323@ - 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()
}
}
有什么想法吗?
【问题讨论】:
-
test方法在哪里定义?在哪个班? -
您还需要设置菜单项的
target属性,以便Cocoa 知道将选择器分派到哪里。 -
它与 setUpMenus() 在同一类中定义 设置目标没有任何帮助:/
-
要明确...在您发布的代码中
fourthItemMainMenu有效,但firstItemMainMenu无效? -
是的。如果我将 NSApp.terminate 移动到 firstItem 选择器,则 firstItem 有效,而第四个无效,与方法有关,我不知道为什么,但选择器无法识别它