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 ...
随机推荐
- 8 fastJson的使用
Fastjson介绍 Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发. 1.遵循http://json.org标准,为其官方网站收录的参考实现之一. 2.功能qiang打, ...
- myeclipse 不能添加非myeclipse开发的项目
这是因为以前的项目不是用myEclipse创建的,所以用myeclipse deploy的时候找不到你的项目.可以这样做:右击原项目名 - myeclipse - Add Web Project Ca ...
- 转载:struts标签<s:date>的使用
转载网址:http://blog.sina.com.cn/s/blog_510fdc8b01010vjx.html s truts 标签 :<s:date/>作用:用来格式化显示日期的格式 ...
- 布尔值(Boolean values)
布尔值是特殊的整数. 尽管布尔值由常量 True 和 False 来表示, 如果将布尔值放到一 个数值上下文环境中(比方将 True 与一个数字相加), True 会被当成整数值 1, 而 False ...
- AngularJS 父子控制器
<!doctype html> <html ng-app="myApp"> <head> <script src="C:\\Us ...
- IOS 项目问题总结
把自己项目中遇到的问题总结一下,供大家参考,希望大家多多提出意见!! 在Xcode 6.2中遇到Your build settings specify a provisioning profile w ...
- CocosCode IDE 打包APK失败的原因
因为在lua目录下应用了git版本控制,导致打包的时候,复制(移动).git里面的文失败.从而第一次能打包成功,第二次之后就会失败.提示 os.move()失败.对应framworks/runtime ...
- VS2010中<无法打开包括文件:“iostream.h”:>错误解决方法
C/C++ code? 1 2 #include <iostream.h> 改为: C/C++ code? 1 2 #include <iostream> using name ...
- dwz分页实现分析
dwz给我们提供了一个很好的列表UI 我对它的分析后将页面分为四个部分 <form id="pagerForm" method="post" action ...
- 浅谈WebView的使用 js alert
http://blog.csdn.net/liuhe688/article/details/6549263 WebView是Android中一个非常实用的组件,它和Safai.Chrome一样都是基于 ...