美文网首页
获得当前顶层控制器

获得当前顶层控制器

作者: 奋斗的遗忘人 | 来源:发表于2022-07-04 09:51 被阅读0次

当前顶层控制器

- (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;
}

当前UI的VC

- (UIViewController*) getCurrentUIVC{
    UIViewController  *superVC = [self getCurrentVC];
    if ([superVC isKindOfClass:[UITabBarController class]]) {
        UIViewController  *tabSelectVC = ((UITabBarController*)superVC).selectedViewController;
        if ([tabSelectVC isKindOfClass:[BaseNavigationController class]]) {
            return ((BaseNavigationController*)tabSelectVC).viewControllers.lastObject;
        }
        return tabSelectVC;
    }else
        if ([superVC isKindOfClass:[BaseNavigationController class]]) {
            return ((BaseNavigationController*)superVC).viewControllers.lastObject;
        }
    return superVC;
}

相关文章

网友评论

      本文标题:获得当前顶层控制器

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