初学iOS,在跳转方式上碰壁了,原因是基础知识不牢固,总结一下自己的理解,如有错误请指正!
iOS 跳转方式有以下2种:
1:直接跳转,可以跳转到UIViewController或UINavigationController类型的视图
presentViewController : 跳转 dismissViewController:返回
2. 导航跳转,只能跳转到UIViewController
使用栈方式进行界面间的跳转,根视图控制器必须是UINavigationController
self.navigationController pushViewController 进行页面跳转 , popViewControllerAnimated : 返回
导航跳转方式: 跳转到的界面都会默认带导航条,并且默认有返回按钮 <返回(根视图控制器没有返回按钮)
两种方式的使用场景:
首先说导航方式:使用导航方式的前提是根视图必须是UINavigationController类型,如果不是那么只能使用直接跳转方式了;
另外pushViewController函数的参数时UIViewController类型,不支持UINavigationController类型,否则会报错,
而直接跳转方式是支持UINavigationController类型的。
所以根据①目标界面的类型是否UINavigationController、②是否要导航条、③根视图是否为UINavigationController类型即可判定使用哪种方式
导航控制器掌握:
1.创建导航控制器
[[UINavigationController alloc] initWithRootViewController:self.viewController];
2.栈(栈中所有的子控制器)
self.navigationController.viewControllers;
3.将控制器压入栈中
[self.navigationController pushViewController:second animated:YES];
4.将控制器从栈中弹出
1> 将栈顶控制器弹出
[self.navigationController popViewControllerAnimated:YES];
2> 回到栈底控制器(根控制器)
[self.navigationController popToRootViewControllerAnimated:YES];
3> 回到具体某一个控制器
[self.navigationController popToViewController:<#(UIViewController *)#> animated:<#(BOOL)#>];
5.导航栏显示的内容
1> 栈顶控制器的navigationItem属性决定了导航栏上面显示的东西
2> 导航栏左边的返回键,是由上一个控制器决定
6.栈顶控制器
self.navigationController.topViewController