一、导航视图控制器

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];

最新文章

  1. 学习笔记:7z在delphi的应用
  2. My first win32 application program
  3. php命令传参
  4. How about xlogs are missing and xlogs are deleted
  5. C#正则表达式编程(二):Regex类用法
  6. 手机端APP原型相关
  7. C#中的委托,匿名方法和Lambda表达式
  8. KafkaClient接口与Kafka处理请求的若干特性
  9. dom对象详解--document对象(二)
  10. ios 沙盒 NSCoding(相当于JAVA对象序列化) 归档 数据存储
  11. 用python实现k近邻算法
  12. C#中ISpostback
  13. 项目中BigDecimal与Double使用场景
  14. Step by step guide to set up master and slave machines on Windows
  15. X-pack 6.4.0 破解
  16. 66.ajax--ajax请求多个url解决办法
  17. Python3 tkinter基础 Spinbox 可输入 能调整的 从指定范围内选择参数的控件
  18. wifi rate vs mode
  19. 003.Ansible基础使用
  20. find,xargs,tar有选择打包

热门文章

  1. VS2015试验随手记
  2. 一句SQL实现MYSQL的递归查询
  3. IntelliJ IDEA启动web项目时突然变慢的原因
  4. web多语言的一种处理方式
  5. Strange Grid
  6. jquery之下拉列表select
  7. USB 各型插座插头引脚分布
  8. UDP数据接收服务器
  9. 06_Elasticsearch 批量获取mget
  10. 【转】win32,win64编程永恒;语言编程需要注意的64位和32机器的区别