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