如何在当前显示View中获取当前控制器

来源:互联网 发布:淘宝网首页包 编辑:程序博客网 时间:2024/04/19 16:18

首先:我们得明白一个道理,程序和人一样每个事物之前都是有联系的,就想很久之前听说过的一句话:通过三个人,你能联系上世界上所有的人。所以程序之间每个对象之间只要他们有联系,我们就一定可以通过各种途径获取到我们想要的对象。好了,不扯了,步入主题。

一、UIWindow是一种特殊的UIView,通常在一个程序中只会有一个UIWindow,但可以手动创建多个UIWindow,同时加到程序里面。UIWindow在程序中主要起到三个作用:

  1、作为容器,包含app所要显示的所有视图

  2、传递触摸消息到程序中view和其他对象

  3、与UIViewController协同工作,方便完成设备方向旋转的支持


- (UIViewController *)getCurrentVC

{

   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];

    

   id nextResponder = [frontView nextResponder];

    

   if ([nextResponder isKindOfClass:[UIViewController class]])

        result = nextResponder;

   else

        result = window.rootViewController;

    

   return result;

}



0 0
原创粉丝点击