【发布时间】:2021-01-12 19:00:42
【问题描述】:
第一次发帖,非常新手 swift 用户。我遇到了使用外部类方法作为 NSMenuItem 的操作的问题。我已经建立了一个名为 NewDocument 的新类,它具有 newDoc 方法。
我想将此方法用作 NSMenuItem 的操作。但是,当我使用它时,菜单项是灰色的?即使我将目标设置为 NewDocument,它仍然无法工作。
非常感谢任何指导或帮助。
//Creating Instance of class
let createNewDocument = NewDocument()
//Use selector to declare method as action
let menuItem = NSMenuItem(title: "New", action: #selector(createNewDocument.newDoc), keyEquivalent: "")
//Set target to new instance of class
menuItem.target = createNewDocument
新建文档类
class NewDocument: NSObject {
@objc func newDoc() {
// new document logic
}
}
【问题讨论】:
-
阅读en.wikipedia.org/wiki/Target%E2%80%93action。选择器只是包含方法名称的特殊字符串。 Swift 中的
#selector语法用于让编译器为您生成字符串,以防止您写错字。您要使用的方法必须属于一个类。createNewDocument是一个实例,而不是一个类。你可能想要#selector(NewDocument.newDoc)。 -
createNewDocument是否因为超出范围而被释放?
标签: swift xcode macos nsmenuitem