First time poster and very novice swift user. I've came up against a problem of using an external classes method as an action for a NSMenuItem. I've set up a new class called NewDocument have the method newDoc.
I want to use this method as an action for a NSMenuItem. However, when I use it, the menu item is greyed out? Even when I set the target to NewDocument, it still wont work.
Any guidance or help would be very much appreciated.
//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
NewDocument Class
class NewDocument: NSObject {
@objc func newDoc() {
// new document logic
}
}
#selector
syntax in Swift is used to have the compiler generate the string for you, to try to protect you from writing a typo. The method you want to use has to belong on an class.createNewDocument
is an instance, not a class. You probably want#selector(NewDocument.newDoc)
. – AlexandercreateNewDocument
released because it goes out of scope? – Willeke