iOS基础之UINavigationController(导航视图控制器)
UINavigationController:导航视图控制器,是iOS中最常用的多视图控制器之一,用它来管理多个视图控制器,也可以称为管理控制器的控制器,主要管理有层次递进关系的控制器。
创建导航控制器:
//创建根视图
RootViewController *rootVC = [[RootViewController alloc]init];
//创建导航控制器,把rootVC作为导航控制器的跟视图控制器
UINavigationController *naVC = [[UINavigationController alloc]initWithRootViewController:rootVC];
//设置导航为window的根视图
self.window.rootViewController = naVC;
在创建完了之后我们要添加一些属性:
//导航栏标题
self.navigationItem.title = @"主页"
//左按钮
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(leftAction)];
//右按钮
self.navigationItem.rightBarButtonItem = [[UIBarbuttonItem alloc]initWithImage:[UIImage imageNamed;@"next"]style:UIBarButtonItemStylePlain target:self action:@selector(rightAction:)];
//导航栏的显隐属性
self.navigationController.navigationBarHidden = NO;
//导航栏样式
self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
//背景颜色
self.navigationController.navigationBar.backgroundCollor = [UIColor redColor];
//导航栏颜色
self.navigationController.navigationBar.barTintColor = [UIColor yellowColor];
//导航栏元素颜色
self.navigationController.navigationBar.tintColor = [UIClolor bliackColor];
导航视图控制器的工作原理:
1.通过栈的方式管理控制器的切换,控制入栈和出栈来展示各个视图控制器。
2.UINavigationController的ContenView始终显示栈顶控制器的view
3.栈的特点:先进后出,后进先出
4.栈顶为当前显示的视图控制器
导航控制器的一些方法名:
pushViewController:animated 进入下一个视图控制器
popViewController Animated: 返回上一个视图控制器
popToViewController:animated: 返回制定的视图控制器
popToRootViewControllerAnimated: 返回根视图控制器
在没有明显的层次关系的时候,我们可以用模态来控制视图控制器的跳转
//先创建一个目标视图控制器 SecondVC *secondVC =[ [SecondVC alloc]init]; //使用模态跳转 [self presentViewController:secondVC animated:YES completion:^{}];
//使用模态返回
[self dismissViewControllerAnimated:YES completion:^{}];
完成。