以前总结的一些基础知识
一、使用导航控制器实现界面之间的跳转
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];