主要内容:UINavigationController 重要:属性传值(向后一个界面传值)、代理传值(向前相邻的界面传值)、单例传值(不相邻的界面向前传值)
1、UINavigationController 导航控制器,是用来管理多个单视图控制器的控制器,此时他管理的多个单视图控制器之前有一定的层级关系(依赖关系,即下一个页面的出现要依赖于上一个页面),导航视图控制器创建时也会自带一个View,之不过此时它上面有来年各个子视图,一个是contentView ,一个是navigationBar 管理的多个单视图控制器自带的view都添加到contenView上面,导航控制器在完成页面之间的跳转的时候是一个不断地创建和销毁的过程
======================================================
AppDelegate.m
——————————————————————————————
FirstViewController.m
#import "SecondViewController.h"
补充内容:
- (void)viewWillAppear:(BOOL)animated{
NSLog(@"%s",__FUNCTION__);
}
- (void)viewDidAppear:(BOOL)animated{
NSLog(@"%s",__FUNCTION__);
}
- (void)viewWillDisappear:(BOOL)animated{
}
- (void)viewDidDisappear:(BOOL)animated{
NSLog(@"%s",__FUNCTION__);
}
- (void)viewDidLoad {
}
//配置导航条公共的属性,该属性作用于所有的界面
- (void)configureCommonProerty{
//设置导航条的颜色
self.navigationController.navigationBar.barTintColor = [UIColor cyanColor];
//控制导航条的毛玻璃效果是否打开,影响的是contentView上视图的布局
self.navigationController.navigationBar.translucent = YES;
//设置导航条是否隐藏
self.navigationController.navigationBarHidden = NO;
//设置导航条内容颜色(标题,视图边框的颜色)
//设置导航条Back的颜色
self.navigationController.navigationBar.tintColor = [UIColor redColor];
//设置导航条的背景图片
//44的高时图片只能早导航条上
//64的高时,导航条和状态栏都有
//其他情况拉伸或者压缩
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"95"] forBarMetrics:UIBarMetricsDefault];
}
//针对于每个界面单独定制导航条上的内容
- (void)customNavigationItemAppe arance{
//1.配置导航条显示的标题
self.navigationItem.title = @"FirstVC";
//2.配置导航条的标题视图
UISegmentedControl *segmentView = [[UISegmentedControl alloc]initWithItems:@[@"所有通话",@"未接来电"]];
self.navigationItem.titleView = segmentView;
[segmentView release];
//3.0配置导航条的左右按钮
- (void)configureCommonProerty{
}
//针对于每个界面单独定制导航条上的内容
- (void)customNavigationItemAppe
}
#pragma mark 实现左barButton的方法
- (void)handleLeftItem : (UIBarButtonItem *)leftItem{
NSLog(@"添加");
}
#pragma mark 实现右BarbuttonItem 的方法
- (void)handleRight : (UIBarButtonItem *)rightItem{
NSLog(@"垃圾桶");
#pragma mark
- (void)handleLeftItem : (UIBarButtonItem *)leftItem{
}
#pragma mark 实现右BarbuttonItem 的方法
- (void)handleRight : (UIBarButtonItem *)rightItem{
}
- (void)handlePush : (UIButton *)push{
// NSLog(@"欢迎进入第一个页面");
//2.创建SecondViewController对象
SecondViewController *secondVC = [[SecondViewController alloc]init];
//3.获取导航视图控制器并完成跳转
// self.navigationController 获取当前视图的导航控制器对象
//第一个参数:待跳转的试图控制器对象
// 第二个参数:是否需要动画
//
//
}
- (void)handlePush : (UIButton *)push{
// NSLog(@"欢迎进入第一个页面");
//2.创建SecondViewController对象
SecondViewController *secondVC = [[SecondViewController alloc]init];
//3.获取导航视图控制器并完成跳转
//
// self.navigationController 获取当前视图的导航控制器对象
}
——————————————————————————————
SecondViewController.m
当界面切换的时候,来年各个视图A和视图B的消失的过程
视图将要出现的时候触发,此方法主要用来刷新UI界面
- (void)viewWillAppear:(BOOL)animated{
NSLog(@"%s",__FUNCTION__);
}
//视图已经出现的时候触发
- (void)viewDidAppear:(BOOL)animated{
NSLog(@"%s",__FUNCTION__);
- (void)viewDidAppear:(BOOL)animated{
}
//视图将要消失的时候触发
- (void)viewWillDisappear:(BOOL)animated{
NSLog(@"%s",__FUNCTION__);
}
//视图已经消失的时候触发
- (void)viewDidDisappear:(BOOL)animated{
NSLog(@"%s",__FUNCTION__);
- (void)viewWillDisappear:(BOOL)animated{
}
//视图已经消失的时候触发
- (void)viewDidDisappear:(BOOL)animated{
}
- (void)viewDidLoad {
}
- (void)handlePush : (UIButton *)push{
ThirdViewController *thirdVC = [[ThirdViewController alloc]init];
[self.navigationController pushViewController:thirdVC animated:YES];
- (void)handlePush : (UIButton *)push{
}
self.navigationItem.title = @"SecondVC";
第三个控制图省略和上面第三个一样。
——————————————————————————
ForthViewController.m//第四部分实行跳转pop或push
布局部分和第一、二、三个一致(在此省略)
- (void)handelePush : (UIButton *)push{
————————————————————————————————
——————————————————————————————————————
}
说明:
导航控制器是通过栈的形式来管理子控制器的(先进后出)
显示在导航控制器上得view永远是栈顶控制器的view
一个导航控制器只有一个导航条,也就是说所有的自控制器公用一个导航条。
======================================================
下接:
UIPassValue页面传值——UI-第八天(下):
欢迎学习本文,未经博主许可,禁止转载!