2017-01-24 3 views
2

Apples docs sagen:Warum gibt NSApplication sharedApplication mainMenu nil zurück?

Alle ein Menü der Anwendung in der Menüleiste durch eine NSMenu Instanz im Besitz, die von der Anwendung erstellt wird, wenn es startet. Sie können dieses Hauptmenü mit der NSApplication-Methode mainMenu abrufen.

ich folgendes haben, ist in meiner Delegierten Klasse im Menü der App zu erhalten:

- (void)applicationDidFinishLaunching:(NSNotification *)notification{ 
    NSMenu *mainMenu=[[NSApplication sharedApplication] mainMenu]; 
} 

warum ist mainMenu nil? Rufe ich es zur falschen Zeit an? Putting [[NSApplication sharedApplication] mainMenu] in meiner Ansicht Controller loadView gibt auch Null zurück.

Alles, was ich tun möchte, ist das Hinzufügen von Elementen zur Anwendungsmenüleiste.

+1

Was haben Sie versucht, dies zu debuggen? Hast du ein neues Projekt erstellt und hast dort Code programmiert? Es funktioniert für mich von einem View-Controller (habe ApplicationDidFinishLoading nicht getestet, aber es sollte auch funktionieren. – HAS

+1

@HAS du bist richtig, es funktioniert für neue Cocoa Application Projekte. Ich habe meine Dateien auf das neue Projekt verschoben! – user2070775

+0

froh, dass es geholfen hat:) Wenn Sie Zeit haben und das Problem finden, antworten Sie bitte auf Ihre eigene Frage (und geben Sie unter bugreport.apple.com einen Fehlerbericht ab). Vielen Dank! – HAS

Antwort

1

Der Code gibt nil zurück, da das zugehörige Storyboard keine Anwendungsszene/Menüleiste enthält.

Das Erstellen eines neuen Cocoa-Anwendungsprojekts mit xcode baute all das für mich auf und ich musste nur meine Dateien portieren. Der obige Code gibt NSMenu erwartungsgemäß zurück.

Verwandte Themen