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 ...
随机推荐
- (二)backbone - DEMO - user list
Demo介绍 学习了如何基本的使用Backbone,展示用户信息 使用JQuery操作DOM,backbone.localStorage.js操作localstorage 大体实现 •创建user M ...
- 转载Eclipse中Maven WEB工程tomcat项目添加调试
转载地址: http://blog.csdn.net/free4294/article/details/38260581 一.建立一个maven WEB项目 1.file->new->o ...
- 扩展vbox硬盘大小
1.使用VboxManage list hdds查看所有安装的虚拟机信息 2.找到你要扩展硬盘容量虚拟机的UUID,使用modifyhd命令扩展硬盘大小 VBoxManage modifyhd U ...
- django解决跨域请求的问题
跨域请求可以用jsonp来解决,不过今天我发现一个很好用的包:django-cors-headers 只需要简单地配置一下就可 被请求方的setting.py中的配置如下: INSTALLED_APP ...
- ORA-19502: write error on file "", blockno (blocksize=)/linux下磁盘空间满了解决办法--Virtualbox
今天,在测试环境启动数据库时,报错: SQL> startup; ORACLE instance started. Total System Global Area 285212672 byt ...
- DJANTO之FORM
文档很仔细,但熟悉要慢慢来~~ from django.shortcuts import render from contact.forms import ContactForm from djang ...
- 批量删除Kindle Personal Documents
javascript:(function(){ var v = new RegExp("amazon"); if (!v.test(document.URL)) { return ...
- 2015第14周日WebSocket
清明时节雨纷纷,路上行人欲断魂,借问酒家何处是?牧童遥指杏花村.每次清明都不禁想起杜牧这首诗缅怀先人,此时第一句写时间天气,第二句写人物心情,第三句写解决方法,第四句给出解决方案,脍炙人口. 刚没事看 ...
- POJ3255--次短路
求1到N的次短路,到某个顶点v的次短路有两种可能,一是到其他某个顶点u的最短路+edge(u,v)二是到其他某个点u的次短路+edge(u,v): 因此在松弛的时候不仅要记录最短路,同时也要记录次短路 ...
- Linux CPU 亲和性
在Linux中,我们知道可以通过nice.renice命令改变进程的执行优先级,优先级高的进程优先执行,从而一定程度上保证重要任务的运行. 除了nice.renice外,可以通过CPU affinit ...