美文网首页OC-开发案例收集
iOS获取当前的视图ViewController

iOS获取当前的视图ViewController

作者: Lee坚武 | 来源:发表于2020-11-23 17:01 被阅读0次
    -(UIViewController *)getCurrentVC
    {
     UIViewController *result = nil;
        UIWindow * window = [[UIApplication sharedApplication] keyWindow];
        //app默认windowLevel是UIWindowLevelNormal,如果不是,找到UIWindowLevelNormal的
        if (window.windowLevel != UIWindowLevelNormal)
        {
            NSArray *windows = [[UIApplication sharedApplication] windows];
            for(UIWindow * tmpWin in windows)
            {
                if (tmpWin.windowLevel == UIWindowLevelNormal)
                {
                    window = tmpWin;
                    break;
                }
            }
        }
        id  nextResponder = nil;
        UIViewController *appRootVC=window.rootViewController;
        //    如果是present上来的appRootVC.presentedViewController 不为nil
        if (appRootVC.presentedViewController) {
            nextResponder = appRootVC.presentedViewController;
        }else{
    
            NSLog(@"===%@",[window subviews]);
            UIView *frontView = [[window subviews] objectAtIndex:0];
            nextResponder = [frontView nextResponder];
        }
    
        if ([nextResponder isKindOfClass:[UITabBarController class]]){
            UITabBarController * tabbar = (UITabBarController *)nextResponder;
            UINavigationController * nav = (UINavigationController *)tabbar.viewControllers[tabbar.selectedIndex];
            //        UINavigationController * nav = tabbar.selectedViewController ; 上下两种写法都行
            result=nav.childViewControllers.lastObject;
    
        }else if ([nextResponder isKindOfClass:[UINavigationController class]]){
            UIViewController * nav = (UIViewController *)nextResponder;
            result = nav.childViewControllers.lastObject;
        }else{
            result = nextResponder;
        }
        return result;   
    }
    

    相关文章

      网友评论

        本文标题:iOS获取当前的视图ViewController

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