2016-07-10 3 views
-3

Angesichts der folgenden GitHub Projekt anbringt:Wie ein benutzerdefiniertes Menü auf der Hauptansicht in einem OSX-Desktop-App in Swift

https://github.com/kellyjanderson/swift-custom-menue

Wie ich den Menüpunkt Benutzerdefinierte >> Benutzerdefinierte Aktion verknüpfen tun, um die Funktion customAction im ViewController?

+1

Können Sie weitere Details über den Code hinzufügen, den Sie geschrieben haben – triandicAnt

+0

Mögliche Duplikate von [Warum kann ich mein Menü nicht mit meinem View-Controller IBAction verbinden?] (Http://stackoverflow.com/questions/28657058/why-cant -i-connect-my-menu-zu-meinem-view-controller-ibaction) – Willeke

+0

Klicken Sie mit der rechten Maustaste und ziehen Sie. – tbodt

Antwort

0

So die verknüpfte Frage Why can't I connect my menu to my view controller IBAction? kam in der Nähe, aber nicht bieten eine konkrete Lösung für mich. Hier ist, wie ich das gelöst habe.

Zuerst in den Viewcontroller müssen Sie Ihre Funktion als @IBAction

@IBAction func customAction(sender: NSMenuItem){ 
     print("Custom Menu Item clicked") 
    } 

Sobald diese Funktion als IBAction markiert markieren sie in der Responder-Kette zur Verfügung stehen werden; Jetzt können Sie mit gedrückter Strg-Taste den Menüeintrag auf das erste Responder-Symbol ziehen und Ihre Funktion auswählen, in diesem Beispiel customAction.

0

definieren einen Auslass des Menüpunktes in AppDelegate

@IBOutlet weak var customMenuItem: NSMenuItem! 

Ihrer Ansicht Controller zuerst die Instanz von AppDelegate erhalten:

let appDelegate = NSApplication.sharedApplication().delegate as! AppDelegate 

die Instanz des Menüpunkt Get und dann binden eine IBAction dazu:

appDelegate.customMenuItem.action = #selector(customAction(_:)) 

Für z ., möchten Sie eine Aktion customAction an Ihren Menüpunkt binden. Sie können den folgenden Code in viewDidLoad

override func viewDidLoad() { 
     super.viewDidLoad() 
     let appDelegate = NSApplication.sharedApplication().delegate as! AppDelegate 
     print(appDelegate.customMenuItem) 
     appDelegate.customMenuItem.action = #selector(customAction(_:)) 
    } 

hinzufügen und dann den IBAction

func customAction(sender: NSMenuItem){ 
     print("Custom Menu Item clicked") 
    } 

Ausgabe definieren:

<NSMenuItem: 0x6080000a0720 Custom Action> 
Custom Menu Item clicked 
Verwandte Themen