//导航控制器(三种方式切换):(特殊的视图控制器,能够通过栈的方式来管理多个视图控制器) RootViewController *root = [[RootViewController alloc] init]; //创建一个导航控制器:(特殊的视图控制器,能够通过栈的方式来管理多个视图控制器) //每次创建导航控制器时,需要给它指定一个根视图控制器,根视图控制器会第一个被加到导航控制器的栈容器中 //可以理解为:nav为父控制器,root为子控制器 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:root]; self.window.rootViewController = nav; /********************方法:导航控制器对sub执行入栈*******************************/ SubViewController *sub = [[SubViewController alloc] init]; //视图控制器通过此get方法能够拿到管理它的导航控制器 //导航控制器对sub执行入栈操作,(将sub加到导航控制器的栈容器中) [self.navigationController pushViewController:sub animated:YES]; //设置标题 self.navigationItem.title = @"sub"; //iOS7之后 self.view 为clearColor时,切换的时候会卡顿 self.view.backgroundColor = [UIColor blueColor]; //pop//导航控制器对sub执行出栈操作,回到上级界面 //Animated 是否有动画效果 //对栈顶(栈中最上层)元素执行出栈操作 [self.navigationController popViewControllerAnimated:YES]; //直接通过导航控制器回到根视图控制器 [self.navigationController popToRootViewControllerAnimated:YES]; //回到sub界面 //SubViewController *sub = [[SubViewController alloc] init]; //1、popToViewController: 要跳转到的vc对象,必须在导航控制器的栈中 //2、所有vc对象,都放在了导航控制器的viewControllers数组中 //self.navigationController.childViewControllers [self.navigationController popToViewController: self.navigationController.viewControllers[1] animated:YES]; /*************方式:最基本视图切换************/ [self.view addSubview:_sub.view]; //childViewControllers 管理多个子控制器的数组 ThirdViewController *third = (ThirdViewController *)self.childViewControllers[0]; [self.view addSubview:third.view]; /*************方式:通过模态化的方式,呈现sub的view************/ SubViewController *sub = [[SubViewController alloc] init]; //通过模态化的方式,呈现sub的view:实际上的操作是将root的view从window上移除,将sub的view添加到window上 //设置视图的切换方式 sub.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentViewController:sub animated:YES completion:^{}]; //回到root (会自动将sub的view移除,将root的view重新加回来) [self dismissViewControllerAnimated:YES completion:^{ }];