一、导航视图控制器

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. linux删除ORACLE【weber出品必属精品】

    关闭数据库 sqlplus / as sysdba shutdown abort 清除oracle软件 su - oracle cd $ORACLE_BASE rm -rf * rm -rf /etc ...

  2. iOS的Bundle资源束制作

    在静态库的制作中,很多时候我们的静态库也是带着文件,图片和多媒体资源的. 若只是直接加入到项目中也是可以,但是,考虑到方便管理(方便插件使用者的管理),我们希望把插件的资源文件打成一个包来管理. 当然 ...

  3. WCF入门教程系列六

    一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...

  4. TelerikUI_RadGrid_Filter 自定义方法

    要设置 EnableLinqExpressions="false",搞了3,4个小时没反应,就是没有设置这个 Protected Sub btnSearch_Click(sende ...

  5. hadoop之MapReduce WordCount分析

    MapReduce的设计思想 主要的思想是分而治之(divide and conquer),分治算法. 将一个大的问题切分成很多小的问题,然后在集群中的各个节点上执行,这既是Map过程.在Map过程结 ...

  6. CSS: Table-Layout & Word-Break 设置表和列的宽度固定不变

    1. 设置Table的列宽由表格宽度和列宽度设定(指定表格宽度,各个列宽度): table#tbl_id{table-layout:fixed;} 2. 设置TD内容根据宽度进行换行,即使字符串之间无 ...

  7. (转)css中通常会用到浮动与清除,也是一个必须掌握的知识点,概念性的东西不多说,下面举几个例子,来说明它的用法:1.文字环绕效果 2.多个div并排显示 3.清除浮动(默认显示)

    一.文字环绕效果: html代码如下: 1 <body> 2 3 <style type="text/css"> 4 #big img {float: le ...

  8. js 实现音乐播放

    <html><head><title>这种方式支持任何浏览器</title></head><body><div id=&q ...

  9. iOS 断网处理

    iOS 断网处理 (2014-01-13 18:13:21) 转载▼ 标签: it   - (BOOL)application:(UIApplication *)application didFini ...

  10. 启动Tomcat一闪而过解决

    打开apache-tomcat-6.0.32/bing/catalina.bat在首行添加: set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_07 就可以了.