美文网首页iOS开发
iOS开发之获取当前栈中的控制器

iOS开发之获取当前栈中的控制器

作者: 悄然林静 | 来源:发表于2019-01-17 13:55 被阅读0次
    /**
     查找栈中的当前控制器
    
     @return 控制器
     */
    - (UIViewController *)findViewControllerInStack {
        UIViewController *currVC = nil;
        UIViewController *rootVC = [UIApplication sharedApplication].keyWindow.rootViewController ;
        do {
            if ([rootVC isKindOfClass:[UINavigationController class]]) {
                UINavigationController *nav = (UINavigationController *)rootVC;
                UIViewController *v = [nav.viewControllers lastObject];
                currVC = v;
                rootVC = v.presentedViewController;
                continue;
            } else if ([rootVC isKindOfClass:[UITabBarController class]]){
                UITabBarController *tabVC = (UITabBarController *)rootVC;
                currVC = tabVC;
                rootVC = [tabVC.viewControllers objectAtIndex:tabVC.selectedIndex];
                continue;
            }
        } while (rootVC != nil);
        
        return currVC;
    }
    

    相关文章

      网友评论

        本文标题:iOS开发之获取当前栈中的控制器

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