美文网首页
iOS获取当前ViewController

iOS获取当前ViewController

作者: Chase_Eleven | 来源:发表于2018-04-12 21:05 被阅读0次

在iOS开发过程中,我们可能需要获取到屏幕最上层的ViewController

思路

从最底层的ViewController一层一层往上找
也就是从[UIApplication sharedApplication].keyWindow.rootViewController开始寻找

实现
+ (UIViewController *)topViewController {
    UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
    
    return [self topVisibleViewControllerOfViewControlller:rootViewController];
}

+ (UIViewController *)topVisibleViewControllerOfViewControlller:(UIViewController *)vc {
    if ([vc isKindOfClass:[UITabBarController class]]) {
        UITabBarController *tabBarController = (UITabBarController *)vc;
        return [self topVisibleViewControllerOfViewControlller:tabBarController.selectedViewController];
    } else if ([vc isKindOfClass:[UINavigationController class]]) {
        UINavigationController *navigationController = (UINavigationController *)vc;
        return [self topVisibleViewControllerOfViewControlller:navigationController.visibleViewController];
    } else if (vc.presentedViewController) {
        return [self topVisibleViewControllerOfViewControlller:vc.presentedViewController];
    } else if (vc.childViewControllers.count > 0){
        return [self topVisibleViewControllerOfViewControlller:vc.childViewControllers.lastObject];
    }
    
    return vc;
}

相关文章

网友评论

      本文标题:iOS获取当前ViewController

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