iOS 控制器的跳转、页面四个方向的跳转
指定滑动方向的跳转
CATransition *transition = [CATransition animation]; transition.duration = 0.3f; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; transition.type = kCATransitionPush; transition.subtype = kCATransitionFromTop; [self.navigationController.view.layer addAnimation:transition forKey:nil]; LiveViewController *createLiveView = [[LiveViewController alloc] init]; [self.navigationController pushViewController:createLiveView animated:NO];
控制器禁止右滑返回
#import "UINavigationController+FDFullscreenPopGesture.h"
控制器禁止系统的右滑返回 self.fd_interactivePopDisabled=YES;
1、任意跳转控制器
//比如:在后台收到消息指令时,要让应用跳转到某个控制器, x 代表第几个根视图(首页,消息,我的 。 分别是:0 1 2 ),任意视图跳转哦
self.tabBarController.selectedViewController = self.tabBarController.childViewControllers[X];
[self.navigationController popToRootViewControllerAnimated:YES];
2、获取所处到控制器, 并且跳到指定到Controller 或者删除指定到Controller
AppDelegate * app =[UIApplication sharedApplication].delegate; //获取当前视图 (详细获取 见:下面👇) UIViewController * viewNow = [self topViewControllerWithRootViewController:[UIApplication sharedApplication].keyWindow.rootViewController]; //获取视图组 NSMutableArray *marr = [[NSMutableArray alloc]initWithArray:viewNow.navigationController.viewControllers]; //1 这个时要显示到Controller UIViewController * view0 =marr[0]; [marr setArray:@[view0]]; viewNow.navigationController.viewControllers = marr; //2 这个时要删除指定到Controller for (UIViewController *vc in marr) { if ([vc isKindOfClass:[theVCYouWantToRemove class]]) { [marr removeObject:vc]; break; } } self.navigationController.viewControllers = marr; //////////////////////////获取当前到控制器////////////////////// -(UIViewController*)topViewControllerWithRootViewController:(UIViewController*)rootViewController { if ([rootViewController isKindOfClass:[UITabBarController class]]) { UITabBarController *tabBarController = (UITabBarController *)rootViewController; return [self topViewControllerWithRootViewController:tabBarController.selectedViewController]; } else if ([rootViewController isKindOfClass:[UINavigationController class]]) { UINavigationController* navigationController = (UINavigationController*)rootViewController; return [self topViewControllerWithRootViewController:navigationController.visibleViewController]; } else if (rootViewController.presentedViewController) { UIViewController* presentedViewController = rootViewController.presentedViewController; return [self topViewControllerWithRootViewController: presentedViewController]; } else { return rootViewController; } }