Подтвердить что ты не робот

Как получить мой UIWindow с помощью UIApplication?

У меня есть только одно окно, и я попробовал

UIWindow* mWindow = [[UIApplication sharedApplication] keyWindow];

но это вернуло нуль.

Я также пробовал:

UIWindow* mWindow = (UIWindow*)[[UIApplication sharedApplication].windows objectAtIndex:0];

Но это вызвало исключение, и приложение закрылось, когда я попытался распечатать

[[UIApplication sharedApplication].windows count]

Отпечатано 0

Примечание. Я помещаю это в свой единственный метод viewDidLoad контроллера view, и это совершенно новое приложение для iPad iPad, поэтому я ничего не изменил, просто пытаясь получить окно

Пожалуйста, помогите мне получить этот объект

4b9b3361

Ответ 1

Если ваше главное окно является выходом вашего AppDelegate (что должно быть так), вы можете просто использовать

MyAppDelegate* myDelegate = (((MyAppDelegate*) [UIApplication sharedApplication].delegate));
[myDelegate.window ...]

Ответ 2

Самый простой способ - получить окно из делегата приложения:

UIWindow *keyWindow = [[[UIApplication sharedApplication] delegate] window];
// Do something with the window now

Ответ 3

Ключ вашего приложения не установлен до тех пор, пока < <20 > не будет вызван в ваш делегат приложения. Ваш UIViewController, вероятно, загружается из NIB до этого вызова. Это объясняет, почему keyWindow возвращает nil.

К счастью, вашему диспетчеру просмотра не нужно проходить через UIApplication, чтобы получить окно. Вы можете просто:

UIWindow *mWindow = self.view.window;

Ответ 4

[[[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.