如何使用UIApplication获取我的UIWindow?
我只有一个窗口,我试了一下
UIWindow* mWindow = [[UIApplication sharedApplication] keyWindow];
但是这返回零。
我也试过:
UIWindow* mWindow = (UIWindow*)[[UIApplication sharedApplication].windows objectAtIndex:0];
但是,当我试图打印出来时,这引发了一个exception,应用程序closures了
[[UIApplication sharedApplication].windows count]
它打印0
注:我把这个在我唯一的视图控制器的viewDidLoad方法,这完全是一个新的iPad视图基础应用程序,所以我什么也没有改变,只是试图获得窗口
请帮我拿这个东西
如果你的主窗口是你的AppDelegate的sockets(应该是这样),你可以简单地使用
MyAppDelegate* myDelegate = (((MyAppDelegate*) [UIApplication sharedApplication].delegate)); [myDelegate.window ...]
最简单的方法是从应用程序委托中获取窗口:
UIWindow *keyWindow = [[[UIApplication sharedApplication] delegate] window]; // Do something with the window now
在应用程序委托中调用[window makeKeyAndVisible]
之前,应用程序的关键窗口不会被设置。 这个调用之前,你的UIViewController可能是从一个NIB加载的。 这解释了为什么keyWindow
返回nil。
幸运的是,您的视图控制器不需要通过UIApplication来获取窗口。 你可以做:
UIWindow *mWindow = self.view.window;
[[[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.