前言
其实,这个问题之前就遇到过,之前只是简单地认为
[[UIApplication sharedApplication] keyWindow]
这段代码在ViewDidLoad
方法中创建是无效的,必须在ViewDidAppear
创建才有值.
然而,事情没有这么简单....
发现
最近在看网上开源代码的时候,发现,在人家的ViewDidLoad
方法中,keyWindow
是有值的,不是为nil.经过和兵哥的一起观察,发现如果我们在给当前控制器添加导航条之后,再在ViewDidLoad
方法中获取keyWindow
是有值的. 相信,苹果的内部对这一初始化进行了处理.
......
那么问题来了,内部是做了什么处理呢???
我们同时也知道,获取window
还有另外一种方式,如下
[[UIApplication sharedApplication] windows]
那么这方式获取到的windows
和keyWindow
有什么区别呢???
-------------- 占位行 :待更新-------------
结论
所以,要想ViewDidLoad
方法中获取keyWindow
有值,那么就给当前控制器添加一个导航条.
网友评论