前言
在iOS中开放中,我们可能会遇到需要通过代码获取当前显示在屏幕最顶层的ViewController,比如我们需要在最顶层的ViewController上展示一个UIAlertController的时候。本文将介绍如何获取最顶层的ViewController
实现思路
通过最底层的ViewController依次向上寻找,直到找到最顶层的ViewController,也就是从UIApplication的keyWindow的rootViewController开始寻找(如果有多个UIWindow则要考虑UIWindow的选择问题。
在寻找的过程中,要分别考虑当前ViewController是UITabBarController和UINavigationController的情况,同时还要考虑到当前ViewController是否通过presentViewController:animated:completion:模态展示了其他ViewController。
实现方法
- (UIViewController *)topViewController {
UIViewController *resultVC;
resultVC = [self _topViewController:[[UIApplication sharedApplication].keyWindow rootViewController]];
while (resultVC.presentedViewController) {
resultVC = [self _topViewController:resultVC.presentedViewController];
}
return resultVC;
}
- (UIViewController *)_topViewController:(UIV

在iOS开发中,获取当前最顶层的ViewController有时是必要的,例如在需要在最上层显示UIAlertController时。本文介绍了从UIApplication的keyWindow.rootViewController开始,通过遍历并检查是否为UITabBarController或UINavigationController,以及处理模态展示的ViewController,来找到最顶层ViewController的思路和方法。
最低0.47元/天 解锁文章
6260

被折叠的 条评论
为什么被折叠?



