导航栏控制器
navigationBar :导航栏对象
navigationItem:导航元素项对象
translucent:导航栏透明度
pushViewController:推入视图控制器
popViewController:弹出视图控制器
将window的根视图设置为导航控制器
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
//创建一个根视图控制器
VCRoot * root = [[VCRoot alloc]init];
//创建导航控制器
//导航控制器主要用来管理多个视图控制器的切换
//层级的方式来管理多个视图控制器
//参数1:就是作为导航控制器的根视图控制器
UINavigationController * nav= [[UINavigationController alloc]initWithRootViewController:root];
//self.window.rootViewController = [[UINavigationController alloc]initWithRootViewController:[[VCRoot alloc]init]];
//将window的根视图设置为导航控制器
self.window.rootViewController = nav;
[self.window makeKeyAndVisible];
设置导航栏的标题文字
//设置导航栏的标题文字
self.title = @"根视图";
//设置导航元素项目的标题
//如果没有设置navigationItem.title,为Nil
//系统会使用self.title作为标题
//如果navigationItem.title不为空
//将navigationItem.title设置为标题内容
self.navigationItem.title =@"Title";
两种方式创建不同的导航栏左右侧按钮
//创建一个导航栏左侧的按钮
//根据title文字来创建按钮
//P1:按钮上的文字
//P2:按钮风格
//P3:事件拥有者
//P4:按钮事件
UIBarButtonItem * leftBtn = [[UIBarButtonItem alloc]initWithTitle:@"左侧" style:UIBarButtonItemStyleDone target:self action:@selector(pressLeft)];
self.navigationItem.leftBarButtonItem = leftBtn;
//风格设置
typedef NS_ENUM(NSInteger, UIBarButtonItemStyle) {
UIBarButtonItemStylePlain,
UIBarButtonItemStyleBordered NS_ENUM_DEPRECATED_IOS(2_0, 8_0, "Use UIBarButtonItemStylePlain when minimum deployment target is iOS7 or later"),
UIBarButtonItemStyleDone,
};
//风格说明 previous 以前的 complete 完成
UIBarButtonItemStylePlain :Glows when tapped. The default item style.
UIBarButtonItemStyleDone:The style for a done button—for example, a button that completes some task and returns to the previous view.
//创建一个导航栏右侧的按钮
//根据系统风格来创建按钮
//值需要指定风格样式,其他风格的按钮内容或标题文字不能改变
//P1:按钮风格
//P2:事件拥有者
//P3:按钮事件
UIBarButtonItem *rightBtn = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(pressRight)];
self.navigationItem.rightBarButtonItem = rightBtn;
上述只能新增左右两个按钮,如何新增第三个甚至第四个?
//此处label的x、y 两个值是无效的,经过NSLog("%@",label) 验证
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 10, 50, 40)];
label.text = @"test11";
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor blueColor];
//将任何类型的控件添加到导航按钮的方法
UIBarButtonItem * item03 = [[UIBarButtonItem alloc]initWithCustomView:label];
//创建按钮数组
NSArray *arrayBtn = [NSArray arrayWithObjects:rightBtn,item03,nil];
//将右侧按钮数组赋值
//如果是left,则根据rightBtn,item03排序。如果是right,则是从右往左rightBtn,item03排序
self.navigationItem.rightBarButtonItems = arrayBtn;
导航栏风格设置
//设置导航栏的透明度
//默认透明度为YES:可透明的
//NO:使导航栏不透明
self.navigationController.navigationBar.translucent = NO;
//设置导航栏的风格
self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
//设置导航栏的背景颜色
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
//设置导航栏的文字颜色(这里指Next这些)
self.navigationController.navigationBar.tintColor = [UIColor greenColor];
//隐藏导航栏 下面两个等价
//self.navigationController.navigationBar.hidden = YES;
//self.navigationController.navigationBarHidden = YES;
导航控制器的切换
//创建第二个视图控制器对象,并push第二个视图控制器
- (void)pressNext
{
//创建新的视图控制器
VCSecond * vcSecond = [[VCSecond alloc] init];
//使用当前视图控制器的导航控制器对象
[self.navigationController pushViewController:vcSecond animated:YES];
}
UIBarButtonItem * btnLeft = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:@selector(pressBack)];
//当自己设定左侧按钮时
//返回按钮会被左侧按钮替换
self.navigationItem.leftBarButtonItem = btnLeft;
//返回根视图控制器
- (void)pressRight
{
[self.navigationController popToRootViewControllerAnimated:YES];
}
//返回上一级视图控制器
- (void)pressBack
{
NSLog(@"返回上一级");
//将当前的视图控制器弹出,返回到上一级界面
[self.navigationController popViewControllerAnimated:YES];
}
工具栏
工具栏按钮的添加
//按钮数组的创建
NSArray * arrayBtns = [NSArray arrayWithObjects:btn01,btnF02,btn02,btnF02,btn03, nil];
//btn01这些均为UIBarButtonItem对象
self.toolbarItems = arrayBtns;
工具栏风格设置
//实现工具栏对象
//默认工具栏时隐藏的(两种表达一致)
self.navigationController.toolbarHidden = NO;
//NO:使导航栏不透明
self.navigationController.toolbar.translucent = NO;
- iOSm界面跳转和参数传递之presentViewController与dismissViewControllerAnimated
- PresentViewController切换界面
- 使用storyboard的segue控制界面跳转