如何在当前显示View中获取当前控制器
2016-03-23 00:54
323 查看
首先:我们得明白一个道理,程序和人一样每个事物之前都是有联系的,就想很久之前听说过的一句话:通过三个人,你能联系上世界上所有的人。所以程序之间每个对象之间只要他们有联系,我们就一定可以通过各种途径获取到我们想要的对象。好了,不扯了,步入主题。
一、UIWindow是一种特殊的UIView,通常在一个程序中只会有一个UIWindow,但可以手动创建多个UIWindow,同时加到程序里面。UIWindow在程序中主要起到三个作用:
1、作为容器,包含app所要显示的所有视图
2、传递触摸消息到程序中view和其他对象
3、与UIViewController协同工作,方便完成设备方向旋转的支持
- (UIViewController *)getCurrentVC
{
UIViewController *result =
nil;
UIWindow * window = [[UIApplication
sharedApplication] keyWindow];
if (window.windowLevel !=
UIWindowLevelNormal)
{
NSArray *windows = [[UIApplication
sharedApplication]
windows];
for(UIWindow * tmpWin
in windows)
{
if (tmpWin.windowLevel ==
UIWindowLevelNormal)
{
window = tmpWin;
break;
}
}
}
UIView *frontView = [[window
subviews] objectAtIndex:0];
id nextResponder = [frontView
nextResponder];
if ([nextResponder
isKindOfClass:[UIViewController
class]])
result = nextResponder;
else
result = window.rootViewController;
return result;
}
一、UIWindow是一种特殊的UIView,通常在一个程序中只会有一个UIWindow,但可以手动创建多个UIWindow,同时加到程序里面。UIWindow在程序中主要起到三个作用:
1、作为容器,包含app所要显示的所有视图
2、传递触摸消息到程序中view和其他对象
3、与UIViewController协同工作,方便完成设备方向旋转的支持
- (UIViewController *)getCurrentVC
{
UIViewController *result =
nil;
UIWindow * window = [[UIApplication
sharedApplication] keyWindow];
if (window.windowLevel !=
UIWindowLevelNormal)
{
NSArray *windows = [[UIApplication
sharedApplication]
windows];
for(UIWindow * tmpWin
in windows)
{
if (tmpWin.windowLevel ==
UIWindowLevelNormal)
{
window = tmpWin;
break;
}
}
}
UIView *frontView = [[window
subviews] objectAtIndex:0];
id nextResponder = [frontView
nextResponder];
if ([nextResponder
isKindOfClass:[UIViewController
class]])
result = nextResponder;
else
result = window.rootViewController;
return result;
}
相关文章推荐
- 个人信息安全报告发布:有 APP 每分钟调用位置权限 1468 次
- 下载量超过一亿的流行应用被发现含有恶意模块
- 苹果与Siri的七年之痒:“宫斗”戏码不断上演
- APP添加CNZZ统计插件教程 Android版添加phonegap
- Android APP与媒体存储服务的交互
- java实现收藏名言语句台词的app
- 修改Android App样式风格的方法
- Android App数据格式Json解析方法和常见问题
- 通过Html网页调用本地安卓(android)app程序代码
- 百度地图API提示230 错误app scode码校验失败的解决办法
- js判断移动端是否安装某款app的多种方法
- PHP实现批量生成App各种尺寸Logo
- Could not load file or assembly "App_Licenses.dll"的问题
- Android桌面组件App Widget用法入门教程
- 开源电商app常用标签"hot"之第三方开源LabelView
- 基于App自适应draw9patch不失真背景的方法详解
- 安卓APP测试之使用Burp Suite实现HTTPS抓包方法
- web app与原生app的区别
- 使用Chrome浏览器调试Android App详解