获取顶层控制器的两种方法

// 获取顶层控制器

//- (UIViewController *)topViewController {

//    UIViewController *resultVC;

//    resultVC = [self _topViewController:[[UIApplication sharedApplication].keyWindow rootViewController]];

//    while (resultVC.presentedViewController) {

//        resultVC = [self _topViewController:resultVC.presentedViewController];

//    }

//    return resultVC;

//}

//- (UIViewController *)_topViewController:(UIViewController *)vc {

//    if ([vc isKindOfClass:[UINavigationController class]]) {

//        return [self _topViewController:[(UINavigationController *)vc topViewController]];

//    } else if ([vc isKindOfClass:[UITabBarController class]]) {

//        return [self _topViewController:[(UITabBarController *)vc selectedViewController]];

//    } else {

//        return vc;

//    }

//    return nil;

//}


//获取顶层控制器

- (MTDBaseViewController *)viewController

{

    for(UIView*next = [selfsuperview]; next; next = next.superview) {

        UIResponder*nextResponder = [nextnextResponder];

        if([nextResponderisKindOfClass:[UIViewControllerclass]]) {

            return(MTDBaseViewController*)nextResponder;

        }

    }

    return nil;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容