这里就限制介绍代码实现页面跳转,Storyboard的segues方式就不多介绍了,这种方法不适合团队开发。
最多用到的就是pushViewController和与之对应的方法是popViewControllerAnimated。都需要有navigation。
语句为
[self.navigationController pushViewController:newC animated:YES]; //跳转到下一页面
[self.navigationController popViewControllerAnimated:YES]; //返回上一页面
[ self .navigationController popToRootViewControllerAnimated: YES ]; //返回根控制器,即最开始的页面
这里重点介绍一下popToViewController方法:
可以用数组下表的方式实现:
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2]
也可以这样:
for (UIViewController *temp in self.navigationController.viewControllers) {
if ([temp isKindOfClass:[你要跳转到的Controller class]]) {
[self.navigationController popToViewController:temp animated:YES];
}
}
此外pushViewController和popViewController的动画是可以改变的,有多中type,也可以实现模态跳转的效果,这里给大家介绍一个我比较喜欢的跳转动画效果:
-(void)pageCurlAnmation
{
CATransition * tran=[CATransition animation];
tran.delegate =self;
tran.duration = 1;
tran.type = @"rippleEffect";
tran.subtype = @"fromRight";
UIView *view = self.navigationController.view;
[view.layer addAnimation:tran forKey:@"vbdb"];
}
上面type和subtype的类型可以自行查看文档。push或者pop操作的时候:
[self pageCurlAnmation];
[self.navigationController popViewControllerAnimated:YES];
还有经常用到的跳转方法是模态(Modal)形式展示控制器:
[ self presentViewController:SVC animated: YES completion:nil];//跳转
[ self dismissViewControllerAnimated: YES completion: nil ];//返回
如果要跳转的试图控制器为普通的UIViewController,可以利用
[[UINavigationController alloc] initWithRootViewController:controller]
方法来转换一下。