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

最近项目中遇到一个问题,写了一个继承于NSObject的类用于处理服务器返回的数据,其中当服务器返回某个数值时会执行跳转到登录页面的操作,比如登陆过期,但是发现实际上是无法触发VC跳转的,报出警告如下:
Warning: Attempt to present on 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];

你可能感兴趣的:(一段代码轻松解决NSObject类中无法跳转控制器)