iOS-控制器pop跳转

导语

导航控制器的viewControllers是一个栈,当push一个新控制器的时候,这个控制器就会进栈,且位于栈顶,而window每次显示的都是处于栈顶的控制器,而当pop的时候,被pop的控制器会从栈中移除,出栈,新的控制器就会成为栈顶的控制器,从而被window显示。根据这个原理,我们就可以在pop跳转的时候做一些改变。

pop一个新控制器

一般来说,我们的做法都是通过push来进入一个新的控制器,pop来返回上一个控制器,但是如果有需要通过pop来进入一个新的控制器的话,也可以做到。

navigationController的viewcontrollers是一个数组,当我们需要pop进入一个新的控制器的时候,只需要在当前的控制器的前面插入一个新的控制器即可。当pop的时候,当前控制器出栈,新控制器成为栈顶被显示。

代码如下:

InsertViewController *insertVC = [[InsertViewController alloc] init];

NSMutableArray *arrM = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];

[arrM insertObject:insertVC atIndex:self.navigationController.viewControllers.count - 1];

self.navigationController.viewControllers = arrM.copy;

[self.navigationController popViewControllerAnimated:YES];

pop到根控制器

[self.navigationController popToRootViewControllerAnimated:YES];

pop到指定控制器

UIViewController *vc = self.navigationController.viewControllers[1];

[self.navigationController popToViewController:vc animated:YES];

你可能感兴趣的:(iOS-控制器pop跳转)