一、导航视图控制器

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. UI基础视图----UIWebView总结

    UIWebView是UIKit框架中继承于UIView的一个常用的基础视图,和UILabel,UIImageView是兄弟类,用于展示一个网页. UIWebView是一个可以设置代理的类,在加载的不同 ...

  2. poj2785 简单二分

    4 Values whose Sum is 0 Time Limit: 15000MS   Memory Limit: 228000K Total Submissions: 19243   Accep ...

  3. mysql 权限分配及创建新用户

    前言 本文主要是介绍mysql创建新用户命令及赋予权限等命令,为了便于理解,文中会给出相关示例.通常情况下,创建用户,修改mysql密码,授权,是需要有mysql里的root权限. 1.创建用户: / ...

  4. mongodb3 权限认证问题总结

    mongodb3 权限认证问题总结 标签(空格分隔): mongodb 权限 数据库 认证 ubuntu用户安装最新版本mongodb 添加key sudo apt-key adv --keyserv ...

  5. AI自动寻路

    1.首先把游戏场景中的物体设为静态 2.选中Window 中的Navigation ,点击Bake进行场景烘焙 3.在需要寻路的游戏对象上添加 NavMeshAgent组件.调整其AgentSize大 ...

  6. stm32的FSMC

    之前用的stm32f103rbt6,它是100引脚以内的,不带FSMC.驱动液晶屏或者SRAM要自己写时序方面的程序,比较麻烦.后来换成stm32f103zet6,带有FSMC.不过在学习FSMC的时 ...

  7. Using ROWNUM in Oracle

    ROWNUM is an Oracle pseudo column which numbers the rows in a result set. SELECT rownum, table_nameF ...

  8. Ext4.0.7使用Ext.grid.ColumnModel报错:TypeError: Ext.grid.Model is not a constructor

    代码如下: Ext.onReady(function(){ //定义列 var cm = new Ext.grid.ColumnModel([ {header: '编号', dataIndex: 'i ...

  9. vs 自动生成core dump文件

    一直以来觉着core dump这个东西很神奇,在初步学习的时候也没有个大方向,最近项目需要记录程序崩溃时的日志信息,因此在网上寻找相关的信息,此时core dump也成为了我重点关注的东西. 说说我的 ...

  10. Qt try catch排错历程——C++的异常对除零不起作用

    前几天从网上下载了一份网友用Qt写的作品,打开时发现它是用VS2010写的,而我机器上只有VS2008,倒腾了半天最终没能用VS2008打开,而自己又不想再安装VS2010.还好在工程中有.pro文件 ...