iOS 中rootViewcontroller获取

获取工程中window的rootViewcontroller的方法:

  • 方法一
UIWindow *window = [UIApplication shareApplication].keyWindow;
UIViewController *rootViewController = window.rootViewController;

*方法二

AppDelegate *appDelegate = (AppDelegate*)[UIApplication shareApplication].delegate;
UIViewController *rootViewController = appDelegate.window.rootViewController;

两种方法获取到的在一般的时候是没有区别的,但是在有时候就不一样了。

[UIApplication sharedApplication].keyWindow

其中的keyWindow:我理解的是在windows数组中最近调用makeKeyAndVisible方法的属性。
这个我们可以参考UIAlertView来理解:
alertView的出现是生成了一个新的window,展示在界面上。这时我们获取到的keyWindow就是UIAlertControllerShimPresenterWindow这时我们通过keyWindow获取到的rootViewcontroller就不对了。所以我建议还是通过第二种方法来获取rootViewcontroller

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 178,675评论 25 709
  • 你一般怎么获取工程中window上面的RootViewController 第一种方法: UIWindow *wi...
    闲云清烟阅读 2,643评论 1 1
  • 〔原文】《秦誓》曰:“若有一个臣,断断兮无他技,其心休休焉,其如有容焉,人之有技,若己有之,人之彦圣,其心好之,不...
    张永良小霖阅读 844评论 0 0
  • Core Image是一个强大的框架,它能够让你轻松地对图像进行过滤。你能够通过修改图像的饱和度、色调或曝光率来获...
    木易林1阅读 1,203评论 0 1
  • 关键词:油卡、护肤品、新毛巾、新被套 今天请了半天假,所以完成了挺多事情。 请假是为了办理车辆年审,结果因为违章没...
    bq进化论阅读 252评论 0 0

友情链接更多精彩内容