一段代码轻松解决NSObject类中无法跳转控制器

最近项目中遇到一个问题,写了一个继承于NSObject的类用于处理服务器返回的数据,其中当服务器返回某个数值时会执行跳转到登录页面的操作,比如登陆过期,但是发现实际上是无法触发VC跳转的,报出警告如下:
Warning: Attempt to present <UINavigationController: 0x7f818a07f200> on <UINavigationController: 0x7f818a024400> whose view is not in the window hierarchy!
代码如下:

EALoginViewController *loginVC = [EALoginViewController new];
            UINavigationController *navc = [[UINavigationController alloc] initWithRootViewController:loginVC];
            [topRootViewController presentViewController:navc animated:YES completion:nil];

查阅资料才了解到应该是VC的生命周期执行顺序导致代码无法触发,最后找到解决办法,代码如下:

UIViewController *topRootViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
            while (topRootViewController.presentedViewController)
            {
                topRootViewController = topRootViewController.presentedViewController;
            }
            
            EALoginViewController *loginVC = [EALoginViewController new];
            UINavigationController *navc = [[UINavigationController alloc] initWithRootViewController:loginVC];
            [topRootViewController presentViewController:navc animated:YES completion:nil];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • /* UIViewController is a generic controller base class th...
    DanDanC阅读 5,918评论 0 2
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,667评论 4 61
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 12,400评论 0 27
  • 一、慢性咽炎,鼻炎 艾灸大椎穴,人迎穴,天突,印堂,迎香,合谷,一周六次 二、艾灸脾胃灸 一周五次 艾灸注意事项P...
    小艾xie阅读 1,873评论 0 0
  • 曾经因为一只风筝,跟随卡勒德.胡赛尼去见证阿米尔人性的本质与救赎;也曾经因为一个影子,与马克.李维感受人间真情。这...
    晞曰阅读 3,060评论 0 0

友情链接更多精彩内容