jak uzyskać mój UIWindow za pomocą UIApplication?
Mam tylko jedno okno i próbowałem
UIWindow* mWindow = [[UIApplication sharedApplication] keyWindow];
Ale to zwróciło zero.
Ja też próbowałem:
UIWindow* mWindow = (UIWindow*)[[UIApplication sharedApplication].windows objectAtIndex:0];
Ale to wywołało wyjątek i aplikacja została zamknięta, gdy próbowałem wydrukować
[[UIApplication sharedApplication].windows count]
Wydrukowano 0
Uwaga: umieszczam to w metodzie viewDidLoad mojego jedynego kontrolera widoku i jest to całkowicie nowa aplikacja oparta na widoku iPada, więc nic nie zmieniłem, po prostu próbuję uzyskać Okno
Proszę pomóż mi zdobyć ten obiekt
4 answers
Jeśli Twoje główne okno jest wylotem Twojego AppDelegate( co powinno mieć miejsce), możesz po prostu użyć
MyAppDelegate* myDelegate = (((MyAppDelegate*) [UIApplication sharedApplication].delegate));
[myDelegate.window ...]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-23 20:41:55
Najprostszym sposobem jest uzyskanie okna z delegata aplikacji zamiast:
UIWindow *keyWindow = [[[UIApplication sharedApplication] delegate] window];
// Do something with the window now
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-25 19:25:30
Okno klucza aplikacji nie jest ustawione, dopóki {[1] } nie zostanie wywołane w delegacie aplikacji. Twój UIViewController jest prawdopodobnie ładowany z stalówki przed tym wywołaniem. To wyjaśnia, dlaczego keyWindow
zwraca zero.
Na szczęście kontroler widoku nie musi przechodzić przez aplikację, aby uzyskać okno. Można po prostu zrobić:
UIWindow *mWindow = self.view.window;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-23 21:00:00
[[[UIApplication sharedApplication] windows] objectAtIndex:0]; // You can also check the count of this to make sure, because if there are no windows it will crash.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-04 00:21:53