[UIApplication sharedApplication].keyWindow.rootViewController

Posted 不停奔跑的蜗牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[UIApplication sharedApplication].keyWindow.rootViewController相关的知识,希望对你有一定的参考价值。

一般来说 [UIApplication sharedApplication].keyWindow.rootViewController 会在 appDelegate 中初始化,并且整个应用运行过程中都不会变。

 

所以在很多地方需要用 presentModelViewController 方法时,用这个 rootViewController 是很方便的,因为它相当于一个全局变量,无需再申请、释放。

 

但是本人在使用过程中发现有 rootViewController 被改为 nil 的情况。

 

分析后发现,当 UIAlertView 调用 show 方法后,rootViewController 会被改为 nil,当它 dismiss 后又改回去。而我需要用户在点击 alertview 上的按钮后再做

presentModelViewController 的操作。

 

解决方法:

不要使用 alertview delegate 中的 

- (void)alertView:clickedButtonAtIndex:

方法

 

而要用:

- (void)alertView:diddismissWithButtonAtIndex:

方法!

以上是关于[UIApplication sharedApplication].keyWindow.rootViewController的主要内容,如果未能解决你的问题,请参考以下文章

WatchKit 中 UIApplication.sharedApplication().delegate 的等价物是啥?

XCTest:[UIApplication sharedApplication] 返回 nil

iOS UIApplication sharedapplication用法

[UIApplication sharedApplication].keyWindow.rootViewController

iOS [[UIApplication sharedApplication] delegate]运用

获取外部 [UIApplication sharedApplication]?