标签:
推出一个新的界面,返回上个界面和回到首页有两种形式,一种是push和pop,另一种是present和dismiss,我们先说第一种
从RootViewController跳转到FirstViewController
1 // 实现点击事件(从RootViewController跳转到FirstViewController) 2 - (void)pushButtonClick:(UIButton *)sender { 3 4 // 1.创建要跳转到视图控制器对象 5 FirstViewController *firstVC = [[FirstViewController alloc] init]; 6 7 // 2.push完成跳转 8 [self.navigationController pushViewController:firstVC animated:YES]; 9 }
从FirstViewController 跳回 RootViewController(以下的几种方法都可以返回到根控制器)
1 - (void)popButtonClick:(UIButton *)sender { 2 3 NSLog(@"返回主视图"); 4 /* 5 navigationController以栈的形式管理其他viewController,也就是先进后出,先进入的viewController放在栈底,后进入的viewController放在栈顶,在pop的时候,先pop栈顶,然后依次执行 6 */ 7 // viewControllers所有处于栈中的控制器,使用此数组保存 8 NSLog(@"%@", self.navigationController.viewControllers); // 打印所有处于栈中的控制器 9 10 NSLog(@"%@", self.navigationController.topViewController); // 打印处于栈顶的控制器 11 12 NSLog(@"%@", self.navigationController.visibleViewController); // 打印当前显示的控制器 13 14 15 // 返回到上一个视图控制器 16 // [self.navigationController popViewControllerAnimated:YES]; 17 18 19 // 返回到指定视图控制器 20 //RootViewController *rootVC = [[RootViewController alloc] init]; 21 // 不能新创建的,我们要找到之前的,都是存在数组的,且根视图控制器在栈底,所以用self.navigationController.viewControllers[0]取出 22 // [self.navigationController popToViewController:self.navigationController.viewControllers[0] animated:YES]; 23 24 25 // 直接返回到根视图控制器 26 [self.navigationController popToRootViewControllerAnimated:YES]; 27 28 }
下面我们来介绍模态推出:
1 // 实现模态推出界面 2 - (void)showButtonClick:(UIButton *)sender { 3 4 ShowViewController *showVC = [[ShowViewController alloc] init]; 5 6 UINavigationController *showNav = [[UINavigationController alloc] initWithRootViewController:showVC]; 7 8 // 设置模态动画 9 showVC.modalTransitionStyle = UIModalTransitionStylePartialCurl; 10 11 // 推出界面 12 [self presentViewController:showNav animated:YES completion:nil]; 13 14 }
返回上个界面:
1 - (void)click:(UIButton *)sender { 2 3 [self dismissViewControllerAnimated:YES completion:nil]; 4 }
标签:
原文地址:http://www.cnblogs.com/zhizunbao/p/5397779.html