美文网首页
获取当前viewcontroller

获取当前viewcontroller

作者: 我是卖报的小行家 | 来源:发表于2020-06-01 16:19 被阅读0次

    目前的话获取当前的ViewController分为两种情况
    1.push过来的Viewcontroller
    2.present出来的ViewController

    下面就针对这两种情况来分别处理

    1.push过来的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;
    }
    

    2.present出来的VC

    - (UIViewController *)getPresentedViewController  
    {  
        UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;  
        UIViewController *topVC = appRootVC;  
        if (topVC.presentedViewController) {  
            topVC = topVC.presentedViewController;  
        }  
        return topVC;  
    } 
    

    相关文章

      网友评论

          本文标题:获取当前viewcontroller

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