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