how to get my UIWindow using UIApplication?
我只有一个窗口,我尝试了
1 | UIWindow* mWindow = [[UIApplication sharedApplication] keyWindow]; |
但这返回零。
我也尝试过:
1 | UIWindow* mWindow = (UIWindow*)[[UIApplication sharedApplication].windows objectAtIndex:0]; |
但这引发了一个异常,当我尝试打印时,应用程序关闭了
1 | [[UIApplication sharedApplication].windows count] |
印0
注意:我将其放在我唯一的视图控制器的viewDidLoad方法中,这完全是一个新的基于iPad View的应用程序,因此我什么也没改变,只是尝试获取窗口
请帮我得到这个物体
如果主窗口是AppDelegate的出口(应该是这种情况),则可以简单地使用
1 2 | MyAppDelegate* myDelegate = (((MyAppDelegate*) [UIApplication sharedApplication].delegate)); [myDelegate.window ...] |
最简单的方法是从应用程序委托获取窗口:
1 2 | UIWindow *keyWindow = [[[UIApplication sharedApplication] delegate] window]; // Do something with the window now |
在应用程序委托中调用
幸运的是,您的视图控制器无需通过UIApplication即可获取窗口。 您可以这样做:
1 | UIWindow *mWindow = self.view.window; |
1 | [[[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. |