在window上添加子视图不显示

最近做项目遇到了这样一个问题:在一个页面中点击模态弹出视图再dismiss回原来的页面并在window上添加子视图,但是无论怎么弄都没法,后来发现原来是获取window出现了问题:
我们习惯获取window的方法有以下几种:

1. UIWindow *window = [[UIApplication sharedApplication].windows lastObject];

2.UIWindow *window = [UIApplication sharedApplication].keyWindow

3.UIWindow *window = [[[UIApplication sharedApplication] delegate] window]  
(或UIWindow *window = [[UIApplication sharedApplication].delegate window])

但事实证明只有第三种方法是最有安全保障,无危害的.
因为:
(1)在rootViewController中的viewDidLoad:方法中调用[[UIApplication sharedApplication].keyWindow addSubview:]有可能无效,因为这时候[UIApplication sharedApplication].keyWindow获取额window为nil,因为这个时候appdelegate中的keywindow还没有创建成功

(2)同上,我遇到的问题也是如此,而我用的方法是UIWindow *window = [[UIApplication sharedApplication].windows lastObject];这个时候window还没创建成功,你根本无法获取

这个问题其实很常见,不知道各位有没有注意到!
如有问题,欢迎指正!

你可能感兴趣的:(在window上添加子视图不显示)