美文网首页
iOS获取当前显示页面controller

iOS获取当前显示页面controller

作者: 时米高的人生笔记 | 来源:发表于2017-07-24 11:25 被阅读22次
    关于window
    • UIWindow在显示的时候会根据UIWindowLevel进行排序的,即Level高的将排在所有Level比他低的层级的前面
    • 当Level层级相同的时候,只有第一个设置为KeyWindow的显示出来,后面同级的再设置KeyWindow也不会显示
    //获取到当前显示界面的controller
    - (UIViewController *)getCurrentVC{
        
        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;
                }
            }
        }
        UIViewController *result = window.rootViewController;
        while (result.presentedViewController) {
            result = result.presentedViewController;
        }
        if ([result isKindOfClass:[BasicTabBarC class]]) {
            result = [(BasicTabBarC *)result selectedViewController];
        }
        if ([result isKindOfClass:[UINavigationController class]]) {
            result = [(UINavigationController *)result topViewController];
        }
        return result;
    }
    

    相关文章

      网友评论

          本文标题:iOS获取当前显示页面controller

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