获取当前屏幕下的viewController对象

来源:互联网 发布:mssql数据库备份分离 编辑:程序博客网 时间:2024/06/06 06:15

方法一

- (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;

}


方法二

-(UIViewController *)getTopViewController:(UIViewController *)viewController {

    if ([viewController isKindOfClass:[UITabBarController class]]) {

        return [self getTopViewController:[(UITabBarController *)viewController selectedViewController]];

    } else if ([viewController isKindOfClass:[UINavigationController class]]) {

        return [self getTopViewController:[(UINavigationController *)viewController topViewController]];

    } else if (viewController.presentedViewController) {

        return [self getTopViewController:viewController.presentedViewController];

    } else {

        return viewController;

    }

}

原创粉丝点击