1、具有管理视图控制器的控制器
2、导航控制器管理具有层次级别的多视图控制器
3、创建导航控制器
①、创建视图控制器
TextViewController *text = [[TextViewController alloc] init];
②、创建导航控制器控制视图
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:text];
③、将导航控制器赋给根视图控制器
self.window.rootViewController = nav;
二、导航控制器的属性管理
1、设置导航栏的标题
self.title = @"主页”;
注意:self.title(通用标题)UINavigationController和UITabbarController都有效
2、单独设置UINaVigationController标题
self.navigationItem.title = @"设置”;
3、添加item
①、利用按钮标题创建barButtonIem(左item)
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:@selector(leftAction:)];
②、利用系统样式创建barButtonItem(右item)
UIBarButtonItem *right = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(leftAction:)];
self.navigationItem.rightBarButtonItem = right;
③、利用图片创建barButtonItem
UIImage *image = [UIImage imageNamed:@"1.jpg"];
image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *imageItem = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(leftAction:)];
注意:图片尺寸最好 32*32(像素)
4、NavigationController的属性设置
//多态:父类指针指向子类对象
self.navigationItem.titleView = segment;
//设置是否隐藏导航栏
self.navigationController.navigationBar.hidden = NO;
//设置背景颜色
self.navigationController.navigationBar.backgroundColor = [UIColor yellowColor];
//设置导航栏的样式
self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
//设置导航栏原色颜色
self.navigationController.navigationBar.tintColor = [UIColor cyanColor];
//设置导航栏是否透明
//当导航栏为透明色时,控制器的根视图原点为屏幕原点
//当导航栏不为透明色时,控制器的根视图原点为导航栏左下角
//状态栏高度20,导航栏高度为44
//在iOS7版本以后,对导航栏颜色背景相关的设置会影响状态栏
self.navigationController.navigationBar.translucent = YES;
//当前导航控制器中的所有控制器
self.navigationController.viewControllers;
//栈顶控制器 == 当前可见视图控制器
self.navigationController.topViewController;
self.navigationController.visibleViewController;
①、用于跳转第二页
//创建新的页面/视图控制器
RootViewController *root = [[RootViewController alloc] init];
//利用导航控制器推出新的页面
[self.navigationController pushViewController:root animated:YES];
②、用于返回上一个视图的
//返回到栈底视图控制器,根视图控制器
[self.navigationControllerpopToRootViewControllerAnimated:YES];
//将当前视图控制器出栈,显示上一个视图控制器
[self.navigationControlle
popViewControllerAnimated:YES];
//返回到指定视图控制器(必须存在栈中)
[self.navigationController popToViewController:self.navigationController.viewControllers[0] animated:YES];
③、模态跳转
//模态推出页面
//不在导航控制器
[self presentViewController:second animated:YES completion:^{
NSLog(@"第二页已经被推出");
}];
//模态页面时的动画
second.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
//退出模态
[self dismissViewControllerAnimated:YES completion:^{
NSLog(@"已经退出模态");
}];