UINavigationController 导航控制器
一、导航视图控制器
1.管理视图控制器
2.控制视图控制器之间的跳转
3.是以压栈和出栈的形式来管理视图控制器
4.导航视图控制器必须要设置根视图控制器
5.导航是视图控制器包含UINavigationBar,而且UINAvigationBar是被每个视图控制器俩管理的
UINavigationBar包含NavigationItem(一个标题,两个按钮)
6.push压栈是要alloc新对象来显示,POP出栈是返回已经存在的对象,所以不要alloc
//初始化根视图
FirstViewController *firstViewController =[[FirstViewController alloc] init];
//创建一个导航视图控制器,并且设置其根视图控制器
UINavigationController *navigationController =[[UINavigationController alloc] initWithRootViewController:firstViewController];
//如果使用导航视图控制器来管理视图,那么就不要使用firstViewController作为window的根视图,使用导航视图控制。因为导航视图控制器已经接管了视图
self.window.rootViewController =navigationController;
//因为UIViewController的懒加载机制 所以必须使用其view的时候才会去调用一系列的view的创建和显示过程
//试图控制器的创建 相当于在内存创建其对象
SecondViewController *secondViewController =[[SecondViewController alloc] init];
//隐藏导航条
navigationController.navigationBar.hidden=YES;
//以压栈的形式把secondViewController放入导航视图控制器中
[self.navigationController pushViewController:secondViewController animated:YES];
//pop当前对象到上个视图
[self.navigationController popViewControllerAnimated:YES];
//pop到根试图
[self.navigationController popToRootViewControllerAnimated:YES];
//pop指定的视图控制器
NSArray *array = self.navigationController.viewControllers;
[self.navigationController popToViewController:[array objectAtIndex:0] animated:YES];
输出数组只能元素的信息(内存地址和所属类型)
NSLog(@"%@",[array objectAtIndex:0]);
输出数组中的元素个数
NSLog(@"----->>>>>>~~~%d",[array count]);
二、UIBarButtonItem
//创建一个UIBarButtonItem
UIBarButtonItem *rightBarButtonItem =[[UIBarButtonItem alloc] initWithTitle:@"
设置标题
" style:UIBarButtonItemStylePlain(设置类型) target:self(设置目标) action:@selector(btnCilck:)(绑定方法)];
//设置item 右按钮
self.navigationItem.rightBarButtonItem =rightBarButtonItem;
三、生命周期传值
//给FirstViewController对象属性value 赋值的过程
-(void)viewWillDisappear:(BOOL)animated
{
UITextField *textFiled =(UITextField *)[self.view viewWithTag:100];
//获得当前导航试图控制器如包含的所有试图控制器对象
NSArray *array = self.navigationController.viewControllers;
//获得根试图对象
FirstViewController * fv = [array objectAtIndex:0];
//输入框内容赋值给根试图属性
fv.value = textFiled.text;
NSLog(@"我区~~~");
[super viewWillDisappear:YES];
}
//使用给FirstViewController对象属性value 把值传过来
-(void)viewWillAppear:(BOOL)animated
{
NSLog(@"我有回来了~~");
UITextField *textFiled =(UITextField *)[self.view viewWithTag:100];
textFiled.text =self.value;
[super viewWillAppear:YES];
}
四、生命周期
//loadView 和viewDidLoad只会加载一次 在一个试图控制器的生命周期中
//viewWillAppear和viewDidAppear 只要执行View显示功能就会执行
//当前试图正在加载
-(void)loadView
{
NSLog(@"当前试图正在加载");
[super loadView];
}
//当前试图加载完毕
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"当前试图加载完毕");
}
//当前试图将要显示
-(void)viewWillAppear:(BOOL)animated
{
NSLog(@"当前试图将要显示");
[super viewWillAppear:YES];
}
//当前试图已经显示
-(void)viewDidAppear:(BOOL)animated
{
NSLog(@"当前试图已经显示");
[super viewDidAppear:YES];
}
//当前试图将要消失
-(void)viewWillDisappear:(BOOL)animated
{
NSLog(@"---->>>当前试图将要消失");
[super viewWillDisappear:YES];
}
//当前试图已经消失
-(void)viewDidDisappear:(BOOL)animated
{
NSLog(@"---->>>当前试图已经消失");
[super viewDidDisappear:YES];
}
//试图控制机对象被释放的时候会自动调用此方法(手动管理内存)
-(void)dealloc
{
NSLog(@"试图控制器被释放了");
[super dealloc];
}
//
干掉试图控制器
[干掉第二个视图控制器(最后一次返回)release];
UINavigationController 导航控制器的更多相关文章
- UINavigationController导航控制器
UINavigationController导航控制器,是多个界面间跳转的重要元素,可以理解为它存储着多个viewController,它的存储结构是栈,栈的特点是先进后出,所以添加视图控制器时,要特 ...
- UINavigationController 导航控制器 ,根据文档写的一些东西
今天讲了导航控制器UINavigationController 和标签栏视图控制器UITabBarController 先来说一说导航视图控制器 UINavigationController 导航控 ...
- UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解
(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最下面,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...
- IOS UINavigationController 导航控制器
/** 导航控制器掌握: 1.创建导航控制器 UINavigationController *nav = [[UINavigationController alloc] initWithRootVie ...
- IOS第12天(2,UINavigationController导航控制器)
****HMAppDelegate.m @implementation HMAppDelegate - (BOOL)application:(UIApplication *)application d ...
- 轻量级应用开发之(10) UINavigationController导航控制器
一 多控制器 1)一个iOS的app很少只由一个控制器组成,除非这个app极其简单2)当app中有多个控制器的时候,我们就需要对这些控制器进行管理3)有多个view时,可以用一个大的view去管理1个 ...
- 【iOS开发-21】UINavigationController导航控制器初始化,导航控制器栈的push和pop跳转理解
(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最以下,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...
- iOS开发 — (UINaVigationController)导航控制器,界面传值
UINavigationController 继承于 UIViewController , 以栈的方式管理所 控制的视图控制器 . 至少要有一个被管理的视图控制器 ,这个控制器我们称作导航控制器的根视 ...
- 导航控制器 UI_08(上)
主要内容:UINavigationController 重要:属性传值(向后一个界面传值).代理传值(向前相邻的界面传值).单例传值(不相邻的界面向前传值) 1.UINavigationControl ...
随机推荐
- 清空文本框SetDlgItemText(IDC_TXTXT,NULL);
清空文本框 SetDlgItemText(IDC_TXTXT,NULL);
- 【3】创建一个简单的Laravel例子
现在我们来创建一个Laravel的例子来帮助理解 1.首先打开app/Http/routes.php文件,在里边写上一条路由: 2.创建一个控制器,有两种方法 ①在app/Http/Controlle ...
- Bootstrap定制(二)less基础语法
前几日花了一天去看less,这几日在捣鼓其他东西,项目也在有序的进行中,今天花点时间整理下less的基础语法,也分享实际中的一些经验,与众人共享. 本篇笔者以less的基础语法着手,并配合bootst ...
- 数据画图 jpgraph & chart.js
今天想到要研究下“用图表的形式来呈现数据”这个主题.对比了下两种实现的方法: 方法一:通过php代码在服务器端生成图像,再将图像传回客户端.使用jpGraph类库. 方法二:通过js和html5技术, ...
- javascript 笔试题之删除数组重复元素
笔试时紧张没写出来,静下心后发现简单的要死. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" & ...
- ubuntu12.04 安装 ruby1.9.3
sudo apt-add-repository ppa:brightbox/ruby-ng sudo apt-get update sudo apt-get install ruby rubygems ...
- oracle安装报错2
[oracle@centos1 database]$ ./runInstaller Starting Oracle Universal Installer... Checking installer ...
- SVN取消记住密码
百度上面找的,SVN取消记录密码的方法: 找到这个文件夹首先需要在文件夹选项里面,显示所有的文件和文件夹,不能隐藏. SVN取消记住用户名的方法 打开C:\Documents and Settings ...
- 杭州网赛 two rabbits (hdu 4745)
算法很简单,问题是,怎么证明,答案是回文序列. 设a,b走的序列按顺时针是: a1 , a2 , a3 , ... , ak b1 , b2 , b3 , ... , bk 考虑端点的2种情况: 1. ...
- 【HDU1166】敌兵布阵(树状数组或线段树)
是一道树状数组的裸题,也可以说是线段树的对于单点维护的裸题.多做这种题目可以提高自己对基础知识的理解程度,很经典. #include <iostream> #include <cst ...