在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还没创建成功,你根本无法获取

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容