2 个回答
文档中说的是更换你显示的页面,你应该使用切换window的root view(也就是rootViewController.view)来达成这一效果,而不是通过创建一个新的window。
先要明白这些view的层级关系,window->vc.view->subviews。
正如在AppDelegate中我们做的那样,我们创建了一个controller,controller赋值给window.rootViewController,之后window调用makeKeyAndVisible完成了所有页面的绘制。
UIViewController *vc = [[UIViewController alloc] init];
self.window.rootViewController = vc;
[self.window makeKeyAndVisible];
而在我们进行页面切换的时候,也是通过controller的pop或者present进行的。并不会使用window。
下面开始回答问题:
能不能用UIWindow自定义控件?
UIAlertView等控件并不是window, 它们只不过是在-(void)show的时候被add到了window上而已。
在写像UIAlertView等类型的控件的时候,我们也是这样做的。
window->backgroundView->customView,
一般情况下,我们都会先吧一个backgroundView添加到window层中,3个目的:模糊效果、屏蔽底部vc的点击事件和添加自己的点击事件。
之后把customView再添加到backgroundView。