2016-07-16 35 views
0

Ich bin eine Anwendung mit Xcode Interface Builder Storyboard bauen.Mein Menü mit meinem View-Controller IBAction verbunden ist grau

Mein VideoViewController folgende Maßnahmen implementiert:

@IBAction func openVideo(sender: AnyObject) { 
    ... 
} 

Wenn zum First Responder mein Menüpunkt verbindet, kann ich meine Aktion sehen:

connection

Leider, wenn Ich starte meine Anwendung, der Menüpunkt ist ausgegraut:

enter image description here

Irgendeine Idee?

+0

Haben Sie OpenVideo auch an Ihren ViewController angeschlossen (z. B. New Referencing Outlet> ViewController)? –

+0

Wie kann ich das tun? –

+0

Sie sollten einfach in der Lage sein, mit der rechten Maustaste auf den Menüpunkt Video öffnen zu klicken und den Konnektor auf Ihren VideoViewController zu ziehen. Wenn Sie das tun, sollten Sie die openVideo IBAction sehen, mit der Sie es verbinden können. –

Antwort

2

Sie sollten in der Lage sein, die NSMenuItem-Steuerung zu steuern und es mit Ihrem VideoViewController zu verbinden. Normalerweise würde ein IBOutlet verwendet werden, um verbinden Ihre IBAction:

class AppDelegate: NSObject, NSApplicationDelegate { 

    @IBOutlet var myMenuItem: NSMenuItem! 

    @IBAction func openItem(sender: AnyObject) { 
     print("success!") 
    } 
} 

enter image description here

In Ihrem speziellen Fall würden Sie steuern Sie auf und ziehen Sie den Stecker an Ihren VideoViewController.

+0

Wie ich bereits erwähnt habe, verwende ich Storyboard nicht XIB-Datei –

+0

@MartinDelille: Es ist der gleiche Prozess unabhängig davon, ob das Projekt 'xibs',' nibs' und/oder 'Storyboards' verwendet. Wie bereits erwähnt (zweimal), benötigt Ihr Code ein "IBOutlet", das Sie anscheinend nicht enthalten haben. Die 'IBAction'-Funktion wird nicht automatisch mit Ihrem' NSMenuItem' verbunden - das Bild in meiner Antwort sollte zeigen, wie das geht. Konnten Sie versuchen, was ich vorgeschlagen habe? –

+0

andere Frage: Mit welchem ​​Tool haben Sie diese genial klare GIF-Animation erstellt? :-) –

1

Ich weiß, dass OP eine Lösung gefunden hat, und obwohl ich sein Projekt heruntergeladen habe, konnte ich meinen Menüeintrag nicht aktivieren (nicht ausgrauen).

Hier ist, was für mich gearbeitet:

  • ein @IBAction im Ziel erstellen ViewController
  • Aufschalten func validateMenuItem(_ menuItem: NSMenuItem) -> Bool im Ziel ViewController (es muss true zurück, wenn es bestätigt, dass menuItem in der Tat ist die menuItem Sie bereit sind, Verbinden Sie sich mit Ihrem @IBAction)
  • Verbinden Sie MenuItem mit First Responder und dann mit dem @IBAction, den Sie erstellt haben rlier

Das ist es. Hit run und ausatmen.