Znalazłem problem, w wyniku którego nie mogę uzyskać dostępu do głównego okna mojej aplikacji, , ponieważ zwraca ona zero.NSWindow zwraca zero (NSApplication)
let window = NSApplication.sharedApplication().mainWindow
znalazłem podobne pytania:
How to get Main Window (App Delegate) from other class (subclass of NSViewController)?
Ale robi:
let window = (NSApplication.sharedApplication() as! NSArray).objectAtIndex(0)
wydaje się nie działa.
Czy muszę bawić się w Storyboard?
Z góry dziękuję.
Aktualizacja:
Jestem rzeczywiście próbuje coś portu z Objective-C.
NSWindow *mainWindow = [[[NSApplication sharedApplication] windows] objectAtIndex:0];
NSLog(@"%@", mainWindow.contentViewController);
ta zwraca odpowiednią wartość, gdy umieścić w bloku viewDidLoad()
w NSViewController
, więc zgaduję, że jest coś nie tak z NSApplication.sharedApplication()
.
Dzięki za odpowiedź. Próbuję ustawić wartość view2, gdy komórka tabeli dla widoku 1 jest stuknięty. Tak więc powinno się zakończyć ładowanie. Dlaczego miałoby to być? –
Czy Twoje okno jest głównym oknem? Jeśli jest to 'NSPanel', to odmawia on statusu głównego, chyba że zastąpisz' canBecomeMainWindow() ', aby zwrócić true. Podobnie, jeśli nie ma paska tytułu i nie można zmienić jego rozmiaru, odmówi stanie się głównym. –
Jako mój 'Initial Controller' ustawiony jest' NSWindowController' z 'NSWindow'. 'NSWindow' ma pasek tytułu i można go zmienić. Nie jestem pewien "NSPanel" ... nigdy go nie użyłem w moim kodzie. –