Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.4k views
in Technique[技术] by (71.8m points)

swift - Using External Classes method as action for NSMenuItem?

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
    }
}

Example of output


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
  • The target is the instance of the class – createNewDocument
  • The selector is the type + method – #selector(NewDocument.newDoc)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...