iOS | 控制器多次push和present后返回根控制器

controller在跳转时,可能会有push和present交叉使用,
比如A push B
B push C
C present D
当在D页面时,需要回到根视图

以下是核心代码

/** 回到根视图 */
+ (void)toRootViewControllerComplete:(void(^)(void))complete{
    UITabBarController *tabBarVC = (UITabBarController *)[UIApplication sharedApplication].delegate.window.rootViewController;
    //这里topViewController是获取到的当前VC
    UIViewController *topViewController = [AppTool getTopViewController];
    if (topViewController.presentingViewController) {
        [topViewController.presentingViewController dismissViewControllerAnimated:NO completion:^{
            UINavigationController *nv = (UINavigationController *)tabBarVC.selectedViewController;
            [nv popToRootViewControllerAnimated:NO];
            if (complete) {
                complete();
            }
        }];
    }else{
        UINavigationController *nv = (UINavigationController *)tabBarVC.selectedViewController;
       [nv popToRootViewControllerAnimated:NO];
        if (complete) {
            complete();
        }
    }
}

你可能感兴趣的:(iOS | 控制器多次push和present后返回根控制器)