一、导航视图控制器

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 导航控制器的更多相关文章

  1. UINavigationController导航控制器

    UINavigationController导航控制器,是多个界面间跳转的重要元素,可以理解为它存储着多个viewController,它的存储结构是栈,栈的特点是先进后出,所以添加视图控制器时,要特 ...

  2. UINavigationController 导航控制器 ,根据文档写的一些东西

    今天讲了导航控制器UINavigationController 和标签栏视图控制器UITabBarController 先来说一说导航视图控制器  UINavigationController 导航控 ...

  3. UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解

    (1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最下面,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...

  4. IOS UINavigationController 导航控制器

    /** 导航控制器掌握: 1.创建导航控制器 UINavigationController *nav = [[UINavigationController alloc] initWithRootVie ...

  5. IOS第12天(2,UINavigationController导航控制器)

    ****HMAppDelegate.m @implementation HMAppDelegate - (BOOL)application:(UIApplication *)application d ...

  6. 轻量级应用开发之(10) UINavigationController导航控制器

    一 多控制器 1)一个iOS的app很少只由一个控制器组成,除非这个app极其简单2)当app中有多个控制器的时候,我们就需要对这些控制器进行管理3)有多个view时,可以用一个大的view去管理1个 ...

  7. 【iOS开发-21】UINavigationController导航控制器初始化,导航控制器栈的push和pop跳转理解

    (1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最以下,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...

  8. iOS开发 — (UINaVigationController)导航控制器,界面传值

    UINavigationController 继承于 UIViewController , 以栈的方式管理所 控制的视图控制器 . 至少要有一个被管理的视图控制器 ,这个控制器我们称作导航控制器的根视 ...

  9. 导航控制器 UI_08(上)

    主要内容:UINavigationController 重要:属性传值(向后一个界面传值).代理传值(向前相邻的界面传值).单例传值(不相邻的界面向前传值) 1.UINavigationControl ...

随机推荐

  1. oracle数据库事务相关【weber出品必属精品】

    事务的概念:事务:一个事务由一组构成一个逻辑操作的DML语句组成 事务有开始有结束,事务以DML语句开始,以Conmmit和Rollback结束.以下情况会使得事务结束: 1. 执行COMMIT 或者 ...

  2. asp.net 如何改变GridView搜索出来关键字的颜色?就像百度似的,我获得的是一个集合,改变集合中关键字的集合

    输入“产量”查询,将“产量”拆分,产.量 string strColNameCnDt = string.Empty;            for (int j = 0; j < dtTemp. ...

  3. FileUpload

    一upload原理: 1.表单的method必须是post方法 2.enctype属性必须是“mutipatr/form-data”类型 enctype默认的属性是“application/x-www ...

  4. hdu 1215 七夕节

    Problem Description 七夕节那天,月老来到数字王国,他在城门上贴了一张告示,并且和数字王国的人们说:"你们想知道你们的另一半是谁吗?那就按照告示上的方法去找吧!" ...

  5. js中数组的检测方法

    在js中可以使用Object.prototype.toString.call()的来检测一个对象是否为一个数组 //检测数组 var a = [1, 2]; console.log(typeof a) ...

  6. AngularJS 通过 Spring Restful 上传文件

    总结一下,在写下这些文字之前心里很不爽,一个小问题倒腾了这么久...  JS 端: // 指令 app.directive('fileModel', ['$parse', function($pars ...

  7. IE CSS Bug 系列

    1.[IE CSS Bug系列]IE6&IE7图片链接无效 <!doctype html> <html> <head> <meta charset=& ...

  8. 基于zigbee与tiny4412开发板的环境监测系统

    一.开发板环境搭建 1.tiny4412   linux系统的布置 参考博客:http://www.cnblogs.com/luoxiang/p/4186391.html 二.boa服务器的搭建 下载 ...

  9. [原创]零基础R语言教程---第二课---R语言入门

    这节教程简单描述了R语言中常用的数据类型, 向量,字符串,矩阵,列表,数据框,以及附带了一个小例子 对于这节课所附带的例子需要做下列补充: 1.这个例子面向于对整列的数据进行预测 2.如果你需要求单行 ...

  10. (heap)239. Sliding Window Maximum

    题目: Given an array nums, there is a sliding window of size k which is moving from the very left of t ...