iOS开发之获取当前最顶层的ViewController
来源:互联网 发布:java开发平台结构图 编辑:程序博客网 时间:2024/05/18 00:48
前言
在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;}
1 0
- iOS开发之获取当前最顶层的ViewController
- iOS开发 - 获取当前View最顶层的ViewController
- iOS开发 获取当前视图最顶层的ViewController
- iOS 获取当前最顶层的ViewController
- 获取当前最顶层的ViewController
- 获取当前最顶层的ViewController
- IOS获取顶层的viewcontroller
- iOS 获取当前的ViewController
- iOS 获取当前最上层ViewController
- iOS 获取当前控制器的顶层控制器
- iOS 获取当前viewController
- IOS获取当前ViewController
- ios 获取最顶层的控制器
- iOS 获取当前正在显示的ViewController
- iOS 获取当前正在显示的ViewController
- iOS 获取当前正在显示的ViewController
- ios 获取当前处于活动的viewController
- iOS 获取当前屏幕显示的viewcontroller
- Just WHAT IS THE UNIVERSAL SERIAL BUS?
- 图片3
- List集合的遍历以及增删改
- 动态顺序表的简单实现
- OpenGL常用模块(未完)
- iOS开发之获取当前最顶层的ViewController
- JS this指示器
- 数据库相关设计优化
- Solr-项目中的使用
- Java字符串format-用户号补齐格式化应用
- TCP UDP协议网络通讯
- 如何打jar包和运行jar包
- 【BZOJ4876】 [Zjoi2017]线段树
- Boost.Aiso教程 2