1.UINavigationController概述
UINavigationController继承于UIViewController,以栈的方式管理所控制的视图控制器,所以至少要有一 个被管理的视 图控制器
UINavigationController通过入栈和出栈来展示各个视图控制器
2.视图控制器重要属性及切换方法
2.1 UINavigationController的几个重要属性
navigationController //UINavigationController类型的属性,用于切换视图
navigaitonItem //UINavigationItem类型的对象,用于生成UIBarButtonItem类型按钮
navigationBar //UINavigationBar类型的属性,用于设置导航条的属性样式
toolbarHidden //工具条:BOOL类型值,默认为YES,通常隐藏在最底部
2.2 视图切换方式
pushViewController:animated //进入下一个视图控制器
popViewControllerAnimated //返回上一个视图控制器
popToViewController:animated //返回到指定的视图控制器
popToRootViewControllerAnimated //返回到根视图控制器
视图切换步骤及注意事项:
(1)创建button,barButton,p_w_picpathView等可交互的控件,设置点击事件
(2)实现点击事件中的方法,初始化要跳转的视图控制器;如果有正向传值,将变量传递给下一个界面的属性变量
;如果有逆向传值,则设置代理对象,如SecondVC.delegate = self
(3)将要显示的视图压入栈中
示例代码:
- (void)viewDidLoad { [super viewDidLoad]; //添加背景色 self.view.backgroundColor = [UIColor cyanColor]; //给导航栏添加标题,也可用self.title,因为UIViewController本身有title属性 self.navigationItem.title = @"练习专用"; UIBarButtonItem *rightBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:(UIBarButtonSystemItemAdd) target:self action:@selector(nextVC)]; self.navigationItem.rightBarButtonItem = rightBtn; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:(UIBarButtonSystemItemRewind) target:self action:@selector(next)]; //添加一个label,用于传值到下一个页面 _label1 = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 80, 30)]; _label1.text = @"传值专用"; _label1.textAlignment = NSTextAlignmentCenter; _label1.backgroundColor = [UIColor grayColor]; [self.view addSubview:_label1]; //添加一个label3,用于接收逆向代理传值(从后往前传值) _label3 = [[UILabel alloc] initWithFrame:CGRectMake(100, 150, 80, 30)]; _label3.backgroundColor = [UIColor grayColor]; [self.view addSubview:_label3]; // Do any additional setup after loading the view. } //方法实现部分 //实现nextVC方法,用于跳转到下一视图控制器(***关键部分***) - (void)nextVC { //初始化一个SecondViewController SecondViewController *secVC = [[SecondViewController alloc] init]; //第二个视图中的属性变量接收第一个视图中的参数传值 secVC.str = _label1.text; //将secVC推入栈中 [self.navigationController pushViewController:secVC animated:YES]; //将secVC的代理指定为self,用于逆向传值(此句很关键,决定逆向传值能否成功) secVC.delegate = self; [secVC release]; }
3.UINavigationBar导航条
3.1修改UINavigationBar的背景颜色
self.navigationController.navigationBar.barTintColor = [UIColoryellowColor];
3.2 修改UINavigationBar的背景图片
[self.navigationController.navigationBarsetBackgroundImage:[UIImagep_w_picpathNamed:@"猫猫.jpg"] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.clipsToBounds = YES; //图片过大可能会显示不全,可修剪边框
PS:对于navigationBar,iOS7默认的高度是64,如果将navigationBar的透明度关闭之后,
navigationBar的高度将会变为44。
3.3 导航条左右barButton
leftBarButtonItem ,rightBarButtonItem
初始化方法:
//可更改barButton标题
- (id)initWithTitle:(NSString *)title style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action;
//使用系统内部的barButton样式
- (id)initWithBarButtonSystemItem:(UIBarButtonSystemItem)systemItem target:(id)target action:(SEL)action;
***4.UINavigationController界面传值(重点!!!)**
4.1 属性传值(正向,从前往后传值)