美文网首页
iOS 获取当前控制器

iOS 获取当前控制器

作者: 橙_知足常乐 | 来源:发表于2021-02-25 17:32 被阅读0次

Xcode更新到13.5后,发现获取当前vc时,获取到的竟然是window。

解决:如图

如下可复制代码:

//当前显示的控制器

+ (UIViewController *)getCurrentVC

{

    UIViewController*result =nil;

    UIWindow * window = [[UIApplication sharedApplication] keyWindow];

    if (window.windowLevel != UIWindowLevelNormal)

    {

        NSArray*windows = [[UIApplicationsharedApplication]windows];

        for(UIWindow* tmpWininwindows)

        {

            if (tmpWin.windowLevel == UIWindowLevelNormal)

            {

                window = tmpWin;

                break;

            }

        }

    }

    //从根控制器开始查找

    UIViewController*rootVC = window.rootViewController;

    id nextResponder = [rootVC.view nextResponder];

      if([nextResponder isKindOfClass:[UINavigationController class]]) {

          result = ((UINavigationController*)nextResponder).topViewController;

          if([resultis KindOfClass:[UITabBarController class]]) {

              result = ((UITabBarController*)result).selectedViewController;

          }

       }else if([nextResponder isKindOfClass:[UITabBarController class]]) {

           result = ((UITabBarController*)nextResponder).selectedViewController;

           if([result isKindOfClass:[UINavigationController class]]) {

               result = ((UINavigationController*)result).topViewController;

           }

       }else if([nextResponder isKindOfClass:[UIViewController class]]) {

           result = nextResponder;

       }else{

           result = window.rootViewController;

           if([result isKindOfClass:[UINavigationController class]]) {

               result = ((UINavigationController*)result).topViewController;

               if([result isKindOfClass:[UITabBarController  class]]) {

                   result = ((UITabBarController*)result).selectedViewController;

               }

           }else if([result isKindOfClass:[UIViewController class]]) {

               result = nextResponder;

           }

      }

    returnresult;

}

相关文章

网友评论

      本文标题:iOS 获取当前控制器

      本文链接:https://www.haomeiwen.com/subject/hruufltx.html