美文网首页
iOS 获取当前屏幕显示的viewcontroller

iOS 获取当前屏幕显示的viewcontroller

作者: tongyuling | 来源:发表于2018-11-09 15:27 被阅读9次

    //获取当前屏幕显示的viewcontroller

    • (UIViewController *)getCurrentVC

    {

    UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
    
    
    
    UIViewController *currentVC = [self getCurrentVCFrom:rootViewController];
    
    
    
    return currentVC;
    

    }

    • (UIViewController *)getCurrentVCFrom:(UIViewController *)rootVC

    {

    UIViewController *currentVC;
    
    
    
    if ([rootVC presentedViewController]) {
    
        // 视图是被presented出来的
    
        
    
        rootVC = [rootVC presentedViewController];
    
    }
    
    
    
    if ([rootVC isKindOfClass:[UITabBarController class]]) {
    
        // 根视图为UITabBarController
    
        
    
        currentVC = [self getCurrentVCFrom:[(UITabBarController *)rootVC selectedViewController]];
    
        
    
    } else if ([rootVC isKindOfClass:[UINavigationController class]]){
    
        // 根视图为UINavigationController
    
        
    
        currentVC = [self getCurrentVCFrom:[(UINavigationController *)rootVC visibleViewController]];
    
        
    
    } else {
    
        // 根视图为非导航类
    
        
    
        currentVC = rootVC;
    
    }
    
    
    
    return currentVC;
    

    }

    相关文章

      网友评论

          本文标题:iOS 获取当前屏幕显示的viewcontroller

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