iOS 获取当前最顶层的ViewController
2017-04-10 17:57
477 查看
前言
在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:(UIViewController *)vc { if ([vc isKindOfClass:[UINavigationController class]]) { return [self _topViewController:[(UINavigationController *)vc topViewController]]; } else if ([vc isKindOfClass:[UITabBarController class]]) { return [self _topViewController:[(UITabBarController *)vc selectedViewController]]; } else { return vc; } return nil; }
使用方法
UIViewController *topmostVC = [self topViewController];
相关文章推荐
- iOS开发 获取当前视图最顶层的ViewController
- iOS开发 - 获取当前View最顶层的ViewController
- 获取当前最顶层的ViewController
- IOS获取当前ViewController
- iOS 利用visibleViewController和topViewController获取当前显示的页面区别
- IOS MPMoviePlayerViewController 获取当前音频文件播放时间点
- iOS 获取当前正在显示的ViewController或者当前的PresentedViewController
- 获取当前最顶层的ViewController
- 获取iOS应用中当前处于Activity状态的ViewController
- 获取iOS应用中当前处于Activity状态的ViewController
- iOS 获取当前最上层ViewController
- 【iOS开发】获取当前view(视图)所在的Controller(控制器)
- 获取iOS应用中当前处于Activity状态的ViewController
- [iOS 获取当前窗口导航控制器中栈顶viewController] 不普遍适用
- iOS 获取当前的ViewController的方法
- iOS之获取当前view的控制器、当前应用的tabbarController、navigationController中指定viewController
- iOS 获取当前正在显示的ViewController
- iOS 获取当前的ViewController
- cocos2dx 在ios下获取当前ViewController
- iOS开发 获取当前正在显示的ViewController(包含Push的和presented的)