iOS开发 — (UINaVigationController)导航控制器,界面传值
来源:互联网 发布:阿里云机房位置 编辑:程序博客网 时间:2024/05/24 04:02
UINavigationController 继承于 UIViewController , 以栈的方式管理所 控制的视图控制器 ,
至少要有一个被管理的视图控制器 ,这个控制器我们称作导航控制器的根视图控制器 。
任何继承自 UIViewController 的类(多态)都可以作为根控制器。
一: 工作原理:
UINavigationController 通过 栈 的⽅式管理控制器的切换, 控制⼊栈和出栈 来展⽰示各个视图控制器 。
UINavigationController 的 ContentView ⾥里始终显⽰栈顶 控制器的 view 。
viewControllers 属性存储了栈中的所有被管理的控制器 navigationController 属性 ,父类中的属性, 每个在栈中的控制器 ,都能通过此属性,获取⾃己所在的 UINavigationController 对象
常用属性
viewControllers // 所有处于栈中的控制器topViewController // 位于栈顶的控制器visibleViewController // 当前正在显⽰示的控制器navigationBar // 导航条
navigationBar 是导航条, iOS7 之后默认是透明的, iOS7 之前默认是不透明 的。
navigationBar 在透明情况,与 contentView 会重合⼀部分区域。
navigationBar 在不透明情况, contentView 跟在 navigationBar 的下⾯。
navigationBar 竖屏下默认⾼高度 44 ,横屏下默认⾼度 32
二:<代码展示>
1:设置根视图控制器
"AppDelegate.m"//1:创建firstVC FirstViewController *firstVC = [[FirstViewController alloc]init];//2.创建导航视图控制器对象 naVC UINavigationController *naVC = [[UINavigationController alloc]initWithRootViewController:firstVC];//3.将导航视图控制器对象 naVC 指定为window根视图控制器 self.window.rootViewController = naVC;//4.释放所有权 [naVC release]; [firstVC release];
在这个文件里可以定制 navigationBar
//1.设置barTincolor // naVC.navigationBar.barTintColor = [UIColor cyanColor]; //关闭半透明 naVC.navigationBar.translucent = NO; //2.设置tinColor // naVC.navigationBar.tintColor = [UIColor yellowColor];//3.设置风格 默认是0 白色 1是黑色 naVC.navigationBar.barStyle = 1;
//4.设置背景图片
//当我们navigation设置图片的时候 navigation不再透明
//图片尺寸:
//当小于44或者大于64时候 图片会在navigationBar和satusBar上产生平铺的效果
//当尺寸正好等于44时候 图片只会位navigationBar附上图片
//当尺寸正好等于64时候,图片会为navigationBar以及statusBar同时附上图片;
[naVC.navigationBar setBackgroundImage:[UIImage imageNamed:@"32074.png"] forBarMetrics:UIBarMetricsDefault];
//隐藏navigationBar(导航栏)和StatusBar(状态栏)
naVC.navigationBarHidden = NO;
在根视图控制器
1:设置导航栏标题
self.navigationItem.title = @"first";
或者
self.title = @"First(主页)";
2:设置右边的Barbutton
//方法一 使用的系统的图标
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(nextAction:)];
//方法二 通过View自定义创建
//创建button UIButton *BT = [UIButton buttonWithType:UIButtonTypeSystem]; [BT setTitle:@"下一页" forState:UIControlStateNormal]; [BT addTarget:self action:@selector(nextAction:) forControlEvents:UIControlEventTouchUpInside]; BT.frame = CGRectMake(0, 0, 60, 50); //通过button 创建barButtonItem UIBarButtonItem *rightItem = [[UIBarButtonItem alloc]initWithCustomView:BT]; //给rightBatButtonItem赋值 self.navigationItem.rightBarButtonItem = rightItem; //释放所有权 [rightItem release];
3:设置左边的返回按钮 一般使用系统的图标
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemReply target:self action:@selector(LastAction:)];
pushViewController:animated // 进⼊入下⼀个视图控制器popViewControllerAnimated : // 返回上⼀个视图控制器popToViewController:animated // 返回到指定的视图控制器popToRootViewControllerAnimated // 返回到根视图控制器
4:触发事件 从根视图推到下一视图push
-(void)nextAction:(UIBarButtonItem *)Bt{ //创建下一个视图控制器对象 SecondViewController *secondVC = [[SecondViewController alloc]init]; //2. 通过导航视图控制器 push操作 [self.navigationController pushViewController:secondVC animated:YES]; [secondVC release];}
5:从下一视图返回根视图pop
-(void)LastAction:(UIBarButtonItem *)BT{ [self.navigationController popViewControllerAnimated:YES];}
注:UIBarButtonItem 属于 MVC 的 M 。定义了 UINavigationItem 上按钮的触 发事件,外观等
initWithBarButtonSystemItem:target:action: -initWithTitle:style:target:action: -initWithImage:style:target:action:
界面传值
场景1 : 从前往后传值 First(根视图) –> Second(第二个视图)
方法: 属性传值
步骤:1.在Second中声明对于类型的属性
@property (nonatomic,copy)NSString *tfStr; //用来接收 字符串
2.在First中push的方法中 将值传给Second的属性
secondVC.tfStr = _tf.text;
3.在Second中 使用属性进行操作
_tf.text = _tfStr; //接收来自第一个视图的textFiled的值
场景2 : 从后往前传值 Second(第二个视图) –> First(根视图)
方法 :代理传值
步骤: 1.在Second中声明协议 声明代理
@protocol SecondViewControllerDelegate <NSObject>- (void)secondViewControllerDidDisAppearWithString:(NSString *)string; // 通知 第一个界面 执行方法 将字符串拿走@end@property (nonatomic,assign)id<SecondViewControllerDelegate>delegate; //声明协议的代理
2.在Second将要消失的时候 通知代理执行协议中的方法 将对应的值拿走
-(void)viewDidDisappear:(BOOL)animated{ [super viewDidDisappear:animated]; //通知代理执行协议中的方法 把tf上的字符串拿走 [_delegate secondViewControllerDidDisAppearWithString:_tf.text];}
3.在First中 找到Second对象 并把First设置为Second
这里写代码片
….
secondVC.delegate = self; //设置代理
4.在First中 实现协议中的方法 获取对应的值
实现协议中的方法
-(void)secondViewControllerDidDisAppearWithString:(NSString *)string{//通过传过来的参数 string 给textFiled 赋值 _tf.text = string;}
- iOS开发 — (UINaVigationController)导航控制器,界面传值
- iOS开发:UINavigationController导航控制器
- 我的iOS学习历程 - 导航控制器(UINavigationController) + 界面之间的传值
- iOS开发UINavigation系列四——导航控制器UINavigationController
- iOS开发UINavigation——导航控制器UINavigationController
- iOS 开发学习 导航控制器(UINavigationController)
- ios 导航控制器UInavigationController跳转以及返回传值
- iOS 导航控制器 UINavigationController
- iOS 【UIKit-导航控制器 UINavigationController】
- iOS 自定义导航控制器UINavigationController
- iOS开发学习心得(2)----关于 iPhone 导航控制器 (UINavigationController)
- 【iOS开发-26】利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值
- 【iOS开发-26】利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值
- iOS开发学习笔记——导航控制器1(UINavigationController)
- 【iOS开发-21】UINavigationController导航控制器初始化,导航控制器栈的push和pop跳转理解
- iOS开发UINavigationController导航控制器初始化,导航控制器栈的push和pop跳转理解
- iOS开发-21UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解
- iOS开发-21UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解
- HDU - 4784(状态设计搜索)
- POJ 1753 Flip Game
- weblogic卸载 for linux
- C++基础细节(一)
- 开源硬件的舞者--WIZnet
- iOS开发 — (UINaVigationController)导航控制器,界面传值
- iOS开发-常用第三方开源框架介绍
- 每天5道面试题(二)java基础
- 【POJ 1039】 Pipe (叉积判方向+叉积求交)
- 统计学习方法笔记--EM算法--三硬币例子补充
- 隐马尔科夫模型 介绍 HMM python代码
- 隐马尔科夫模型,第三种问题解法,维比特算法(biterbi) algorithm python代码
- 贝叶斯网络(Bayesian network))简介(PRML第8.1节总结)概率图模型(Graphical models)
- 条件独立(conditional independence) 结合贝叶斯网络(Bayesian network) 概率有向图 (PRML8.2总结)