美文网首页
获取最顶层的VC

获取最顶层的VC

作者: sttech | 来源:发表于2017-05-10 11:40 被阅读0次

    方法一

    - (UIViewController *)viewController{
        for (UIView* next = self; next; next = next.superview) {
            UIResponder* nextResponder = [next nextResponder];
            if ([nextResponder isKindOfClass:[UIViewController class]]) {
                return (UIViewController*)nextResponder;
            }
        }
        return nil;
    }
    

    方法二

    • 找到View 的viewController
    - (UIViewController *)viewController {
        UIResponder *next = self.nextResponder;
        do {
              if ([next isKindOfClass:[UIViewController class]]) {
                return (UIViewController *)next;
            }
            next = next.nextResponder;
        }while (next != nil);
        return nil;
    }
    

    方法三

    • 获取当前VC
    - (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;
    }
    

    相关文章

      网友评论

          本文标题:获取最顶层的VC

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