您的位置:首页 > 移动开发

如何在当前显示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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  app