Ich bin auf ein Problem gestoßen, bei dem ich nicht auf das Hauptfenster meiner App, , zugreifen kann, da es null zurückgibt.NSWindow gibt nil (NSApplication) zurück
let window = NSApplication.sharedApplication().mainWindow
Ich habe festgestellt, ähnliche Fragen:
How to get Main Window (App Delegate) from other class (subclass of NSViewController)?
Aber tun:
let window = (NSApplication.sharedApplication() as! NSArray).objectAtIndex(0)
Scheint nicht zu funktionieren.
Muss ich im Storyboard herumspielen?
Vielen Dank im Voraus.
Update:
Ich bin tatsächlich in den Hafen etwas von Objective-C versucht.
NSWindow *mainWindow = [[[NSApplication sharedApplication] windows] objectAtIndex:0];
NSLog(@"%@", mainWindow.contentViewController);
Dies gibt einen richtigen Wert, wenn sie in dem viewDidLoad()
Block in einem NSViewController
setzen, so vermute ich, es ist etwas falsch mit NSApplication.sharedApplication()
.
Danke für die Antwort. Ich versuche, einen Wert zu View2 festzulegen, wenn eine Tabellenzelle für Ansicht 1 angezapft wird. Also soll es fertig geladen sein. Warum sollte das sein? –
Ist Ihr Fenster das Hauptfenster? Wenn es ein 'NSPanel' ist, dann weigert es sich, main zu werden, es sei denn, Sie überschreiben' canBecomeMainWindow() ', um wahr zurückzugeben. Wenn es keine Titelleiste hat und nicht in der Größe veränderbar ist, wird es sich ebenfalls weigern, Hauptverzeichnis zu werden. –
Als 'Initial Controller' wird ein' NSWindowController' mit 'NSWindow' gesetzt. Das 'NSWindow' hat eine Titelleiste und ist in der Größe veränderbar. Ich bin mir des 'NSPanel' nicht sicher ... habe es nie in meinem Code benutzt. –