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 ...
随机推荐
- VS2015打开工程文件卡死
今天偶然遇到VS2015打开某个工程文件卡死,一直等待无响应: 关闭VS,打开另外一个工程文件是正常的: 开始怀疑是工程文件有问题,用VS2013打开是正常的,排除工程文件问题: 删除对应工程文件下的 ...
- MYSQLI DEMO
1.Select // DEMO mysqli连接方式参考 $db = new mysqli("localhost:3306", "root", "& ...
- Mysql学习(慕课学习笔记7)修改数据表(下)
添加主键约束 ALTER TABLE tb1_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,…….) ...
- POJ3041 二分图最大匹配
问题:POJ3041 分析: 构造二分图:令A = B = { 1, 2, ... , n }, 分别代表行号集与列号集.假如第i行第j列有一颗行星,则连接Ai与Bj, 表示必须从Ai(即第i行),B ...
- VBoxManage.exe: error: Resize hard disk operation for this format is not implemented yet!
VirtualBox虚拟磁盘空间不够了,默认10G.想扩大,图形界面下没有找到可操作菜单.Google了一下用 Vbox自带的命令工具VBoxManage即可解决. C:\Program Files\ ...
- 懂说话,让冲突、尴尬时刻都bye-bye
回忆一下自己从小到大的成长历程,你容不容易交到新朋友?在不熟悉的社交场合中,你是否也曾面临坐立难安.不知从何聊起的窘境?事实上,无论身处学校或社会,担任职务是基础或高阶,终其一生都会派上用场的能力,就 ...
- BZOJ 2436 NOI嘉年华(单调优化)
http://www.lydsy.com/JudgeOnline/problem.php?id=2436 题意:两个会场不能同时表演,但是同一个时间可以同时表演,要求让两个会场表演数量最小的最大,然后 ...
- Power on & RESET 之前?
這是個有趣的問題 ? 當應用系統 或 ic元件模組於初始之前存在的現像為何 是個得住意的問題 ! 因為得考量 是否會對週邊或被控制端造成危害 這也是長常常會是不穩定設計 的原因!得有實務經驗及想像力才 ...
- Common Words
Common Words Let's continue examining words. You are given two string with words separated by commas ...
- 发送cookie