以前总结的一些基础知识
一、使用导航控制器实现界面之间的跳转
1.显示导航栏
先创建一个 RootViewController的类,让它继承UIViewController
在 AppDelegate.m文件中,将RootViewController类导入,且写入以下代码
//这里,将rvc设置为导航控制器nvc的根视图控制器,并将nvc设置为self.window的根视图控制器
//导航栏的默认大小为:320*64 (是否可以改变导航栏的大小??)
RootViewController * rvc = [[RootViewController alloc] init];
UINavigationController * nvc = [[UINavigationController alloc] initWithRootViewController:rvc];
self.window.rootViewController = nvc;
2.使用导航栏切换到下一个页面
把以下代码添加到执行切换动作的方法中(例子是添加到了buttonAction方法)
这里需要在当前文件中导入需要切换到的页面所属的ViewController类(例子是 #import "ViewController1.h")
-(void)buttonAction{
ViewController1 * vc1 = [[ViewController1 alloc] init];
[self.navigationController pushViewController:vc1 animated:YES];
ViewController1 * vc1 = [[ViewController1 alloc] init];
[self.navigationController pushViewController:vc1 animated:YES];
}
3.使用导航栏切换到上一个页面
把以下代码添加到执行切换动作的方法中(例子是添加到了buttonAction方法)
-(void)buttonAction{
// 返回上一层视图控制区
[self.navigationController popViewControllerAnimated:YES];
}
4.使用导航栏切换到根视图控制器页面【常用】
把以下代码添加到执行切换动作的方法中(例子是添加到了buttonAction方法)
-(void)buttonAction{
//返回根视图控制器
[self.navigationController popToRootViewControllerAnimated:YES];
}
5.使用导航栏从当前页面切换到任意视图控制器页面
把以下代码添加到执行切换动作的方法中(例子是添加到了buttonAction方法)
-(void)buttonAction{
//返回到任意一个视图控制器
//但是需要切换到的视图控制器必须是存在于self.navigationController.viewControllers数组中的视图控制器
//viewControllers存储着导航控制器中所有之前跳转到得视图控制器
//push 一次就在viewControllers 数组中多加一个视图控制器的对象
//pop 一次就在viewControllers 数组中删除一个视图控制器的对象
//popTORootViewController,在viewControllers数组中只留下根视图控制器,其他全部删除
NSArray * arr = self.navigationController.viewControllers;
[self.navigationController popToViewController:arr[1] animated:YES];
[self.navigationController popToViewController:arr[1] animated:YES];
}
【注意:使用导航栏切换页面时,一定要把以上方法写到执行切换动作的方法中】
二、导航条控件的设置 【self.navigationItem】
1.设置标题(两种方式)
(1)文字标题
self.title = @"登录界面";//这样既会设置导航的标题,也同时设置了标签栏的标题
self.navigationItem.title = @"登录界面";
(2)用图片设置标题(即在标题位置显示logo图片)
//细节1: titleView优先级高,覆盖文本标题
//细节2: titleView是UIView,意味可以设置任意控件
//细节3: x和y忽略
//细节4: 如果图片显示不出来,原因:(1)名字 (2)必须设置大小
UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 30)];
imageView.image = [UIImage imageNamed:@“title.png"];
self.navigationItem.titleView = imageView;
2.在导航栏左侧添加按钮
- 添加不同风格的按钮
(1)添加文本按钮
UIBarButtonItem * leftBarButton1 = [[UIBarButtonItem alloc] initWithTitle:@"设置" style:UIBarButtonItemStylePlain target:self action:@selector(leftBarButtonAction)];
self.navigationItem.leftBarButtonItem = leftBarButton1;
(2)添加系统风格的按钮
UIBarButtonItem * leftBarButton2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(leftBarButtonAction)];
self.navigationItem.leftBarButtonItem = leftBarButton2;
(3)添加自定义按钮(有图片背景的按钮)
//这里先创建了一个自定义风格的button,将这个button设置为导航栏的左侧按钮
//细节: 图片显示不出来的原因:没有设置大小
UIButton * leftButton = [UIButton buttonWithType:UIButtonTypeCustom];
[leftButton setBackgroundImage:[UIImage imageNamed:@""] forState:UIControlStateNormal];
leftButton.frame = CGRectMake(0, 0, 20, 20);
UIBarButtonItem * leftBarButton = [[UIBarButtonItem alloc]initWithCustomView:leftButton];
self.navigationItem.leftBarButtonItem = leftBarButton;
- 添加不同个数的按钮
(1)只添加一个按钮
self.navigationItem.leftBarButtonItem = leftBarButton1;
(2)添加多个按钮
NSArray * arr = @[leftBarButton1,leftBarButton2];
self.navigationItem.leftBarButtonItems = arr;
- 给下一个页面导航条设置返回按钮(其实也是设置导航条的左侧按钮)
(1)设置导航条上的返回按钮
//细节1: 设置在当前页面,显示在下个界面上
//细节2: 会自动忽略自定义ButtonItem的事件响应方法
//细节3:只能用下述方式创建UIBarButtonItem才能显示出来,并且只能改变返回按钮的标题(即给 backBarButtonItem赋值的对象必须是文本按钮)
self.navigationItem.backBarButtonItem = leftBarButton1;
三、导航条的设置 (风格、背景图片、颜色) 【self.navigationController】
1.设置导航条的风格
[self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];
2.设置导航条的透明度
[self.navigationController.navigationBar setTranslucent:YES];
3.设置导航条的颜色
(1)设置导航条背景颜色
//细节1:混合色
//细节2: 只有设置为透明后才会出现
[self.navigationController.navigationBar setBackgroundColor:[UIColor redColor]];
(2)设置导航栏背景颜色 (纯色,非混合色)
[self.navigationController.navigationBar setBarTintColor:[UIColor blackColor]];
(3)设置色调(即设置导航条上按钮文字的颜色)
[self.navigationController.navigationBar setTintColor:[UIColor redColor]];
4.设置导航条的背景图片
// forBarMetrics参数,横屏还是竖屏
//图片格式:320*64 (iPhone5之前是320*44)
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@""] forBarMetrics:UIBarMetricsDefault];
5.隐藏导航栏
// 要想每次切换到该页面都执行到,需要写到 -(void)viewWillAppear:(BOOL)animated;方法中
[self.navigationController setNavigationBarHidden:YES];
四、工具栏的使用(屏幕最下方)
1.显示工具栏
//工具栏默认是隐藏的
[self.navigationController setToolbarHidden:NO];
2.在工具栏中添加按钮
//下面先定义了两个UIBarButtonItem按钮,再定义了一个UIBarButtonItem类型的空格(按钮中间用空格隔开),最后把它们都添加到工具栏中
UIBarButtonItem *one = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(toolButtonClick:)];
UIBarButtonItem *two = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(toolButtonClick:)];
UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; //间隔也是UIBarButtonItem类型的
//one,two中间放了空格
self.toolbarItems = [NSArray arrayWithObjects:one,space,two,nil];
【补充:要想在导航栏或者工具栏中添加UIView控件】
[
self.
navigationController.
view
addSubview:button];