获取当前显示的ViewController
来源:互联网 发布:rr算法 编辑:程序博客网 时间:2024/06/05 17:14
关于获取当前viewController的实现 上网查了很多,但是不全。自己整合了一下
思路通过过responder 来一步一步的找到最上层的viewcontroller
UIViewController *result =nil;
UIWindow * window = [[UIApplicationsharedApplication] keyWindow];
if (window.windowLevel !=UIWindowLevelNormal)
{
NSArray *windows = [[UIApplicationsharedApplication] windows];
for(UIWindow * tmpWinin windows)
{
if (tmpWin.windowLevel ==UIWindowLevelNormal)
{
window = tmpWin;
break;
}
}
}
UIView *frontView = [[window subviews] objectAtIndex:0];
NSArray *array = [window subviews];
//找到最上层的View
id nextResponder = [frontView nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]])
result = nextResponder;
else
result = window.rootViewController;
return result;
首先进行第一步就死获取 当前window ,查了一下 keywindow 这个东西 保存rootviewController的window 默认的模式是normal, 还有二个是alter 和statusBar。
得到window后 就可以 顺藤摸瓜了
Window是展现视图的,就要从view找起,通过index为0的UIView向上找,直到“响应链”上的一个ViewController。
参考文章:http://www.molotang.com/articles/1513.html
但是这样做是有缺陷的
但view controller present的时候 这个方法就 失效了
所以我们需要加上一句
while (result.presentedViewController) {
NSLog(@"heheh");
result = result.presentedViewController;
}
顺藤摸瓜
- 获取当前显示的ViewController
- 获取当前显示的ViewController
- 获取当前显示的ViewController
- 获取当前显示的viewController
- iOS 获取当前正在显示的ViewController
- iOS 获取当前正在显示的ViewController
- iOS 获取当前正在显示的ViewController
- iOS 获取当前屏幕显示的viewcontroller
- ios-获取当前正在显示的ViewController
- 如何获取当前屏幕显示的viewcontroller
- 获取当前屏幕显示的viewcontroller
- iOS 获取当前正在显示的ViewController
- iOS //获取当前屏幕显示的viewcontroller
- iOS 获取当前正在显示的ViewController
- iOS-获取当前屏幕显示的ViewController
- 获取当前屏幕显示的ViewController
- iOS 获取当前正在显示的ViewController
- 获取当前屏幕显示的viewcontroller
- 利用JS的D3库实现直方图
- Odoo(OpenERP)配置文件openerp-server.conf详解
- 中国光纤通信技术现状和未来,如何发展好这个行业?
- HTTP请求、响应报文格式
- Android内存泄露优化总结
- 获取当前显示的ViewController
- http协议包:请求包和应答包
- 将DataTable中的某一行复制到另一个新的DataTable
- 简单死锁和栈信息、
- 从B 树、B+ 树、B* 树谈到R 树
- 链接
- ubuntu12.04升级到14.04,apt-get install失败的问题解决
- 加密程序PGP背后的故事
- category.DEFAULT