1:栈:先进先出原则。
2:如果是回到上一个控制器,直接self.nav popviewerconvc 即可。
3:如果是回到指定的控制器,需要遍历控制器数组。
for(UIViewController *controller in self.navigationController.viewControllers) {
if([controller isKindOfClass:[BBBViewController class]]){
BBBViewController *owr = (BBBViewController *)controller;
[self.navigationController popToViewController:owr animated:YES];
}
}
此时,中间如果间隔的那些控制器,应该是没有栈顶强指针指着,会自动销毁。
4:如果是回到最下面一个控制器的话,是直接poptorootviewVC
[self.navigationController popToRootViewControllerAnimated:YES];
5:初始化的话:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
UINavigationController *nav = [[UINavigationController alloc]init];
FFFViewController *fff = [[FFFViewController alloc]init];
BBBViewController *bbb = [[BBBViewController alloc]init];
CCCViewController *ccc = [[CCCViewController alloc]init];
DDDViewController *ddd = [[DDDViewController alloc]init];
AAAViewController *aaa = [[AAAViewController alloc]init];
EEEViewController *eee = [[EEEViewController alloc]init];
[nav setViewControllers:[[NSArray alloc]initWithObjects:fff,bbb,ccc,ddd,aaa,eee,nil] animated:YES];
self.window.rootViewController = nav;
[self.window makeKeyAndVisible];
代码上传到csdn--中。