22.导航控制器UINavigationController

原创 2015年11月21日 09:21:05

导航控制器,是iOS中最常⽤的多视图控制器之⼀,它⽤来管理多个视图控制器。

导航控制器可以认为是管理控制器的控制器,主要管理有层级关系的控制器。

UINavigationController继承于UIViewController,以栈的⽅式管理所控制的视图控制器,⾄少要有⼀个被管理的视图控制器,这个控制器我们称作,导航控制器的根视图控制器。

任何继承⾃UIViewController的类(多态)都可以作为根控制器。

UINavigationController通过栈的⽅式管理控制器的切换,控制⼊栈和出栈

来展⽰各个视图控制器。

UINavigationController的ContentView⾥始终显⽰栈顶控制器的view。

viewControllers属性存储了栈中的所有被管理的控制器

⼊栈和出栈

1.进⼊下⼀个视图控制器pushViewController:animated

2.返回上⼀个视图控制器popViewControllerAnimated:

3.返回到指定的视图控制器popToViewController:animated

4.返回到根视图控制器popToRootViewControllerAnimated

============================

初始化一个视图控制器

RootViewController *rootVC = [[RootViewController alloc] init];

初始化一个 导航控制器

初始化时 需要至少一个根视图控制器 去管理

UINavigationController *navC = [[UINavigationController alloc] initWithRootViewController:rootVC];

只要是UIViewController的子类 都可以设置为window的根视图控制器

把导航控制器设置成window的根视图控制器

self.window.rootViewController = navC;

释放导航控制器

释放视图控制器

[rootVC release];

============================

创建一个按钮

点击 跳转下一个界面

UIButton *button = [UIButton buttonWithType:(UIButtonTypeCustom)];

button.frame = CGRectMake(100, 100, 150, 100);

button.backgroundColor = [UIColor yellowColor];

[self.view addSubview:button];

[button addTarget:self action:@selector(buttonClick:) forControlEvents:(UIControlEventTouchUpInside)];

实现点击跳转下一个界面

-(void)buttonClick:(UIButton *)button

{

// 跳转方法

// 视图控制器中 有一个导航控制器的属性

// 一旦这个视图控制器被导航控制器管理了

// 那么导航控制器中的 导航控制器属性 就会有值

// 并且这个值 就是管理他的那个导航控制器

NSLog(@”%@”,self.navigationController.viewControllers);

创建一个视图控制器

SecondViewController * secondVC = [[SecondViewController alloc] init];

跳转下一个界面

[self.navigationController pushViewController:secondVC animated:YES];

NSLog(@”%@”,self.navigationController.viewControllers);

释放

[secondVC release];

}
============================

在secondVC界面创建一个按钮实现返回上一个界面

UIButton *button = [UIButton buttonWithType:(UIButtonTypeCustom)];

button.frame = CGRectMake(100, 100, 150, 100);

button.backgroundColor = [UIColor redColor];

[self.view addSubview:button];

[button setTitle:@”返回上一层” forState:(UIControlStateNormal)];

[button addTarget:self action:@selector(buttonClick:) forControlEvents:(UIControlEventTouchUpInside)];

在secondVC界面创建一个按钮跳转下一个界面

UIButton *button1 = [UIButton buttonWithType:(UIButtonTypeCustom)];

button1.frame = CGRectMake(100, 250, 150, 100);

button1.backgroundColor = [UIColor redColor];

[self.view addSubview:button1];

[button1 setTitle:@”去下一个界面” forState:(UIControlStateNormal)];

[button1 addTarget:self action:@selector(button1Click:) forControlEvents:(UIControlEventTouchUpInside)];

实现返回上一个界面

-(void)buttonClick:(UIButton *)button

{

// 返回上一个界面

[self.navigationController popViewControllerAnimated:YES];

}

实现跳转第三个界面

- (void)button1Click:(UIButton *)button1

{

ThirdViewController *thirdVC = [[ThirdViewController alloc] init];

[self.navigationController pushViewController:thirdVC animated:YES];

}
============================

在thirdVC界面实现跳转到根界面和跳转指定界面

UIButton *button = [UIButton buttonWithType:(UIButtonTypeCustom)];

button.frame = CGRectMake(100, 250, 150, 100);

button.backgroundColor = [UIColor redColor];

[self.view addSubview:button];

[button setTitle:@”去第一界面” forState:(UIControlStateNormal)];

[button addTarget:self action:@selector(buttonClick:) forControlEvents:(UIControlEventTouchUpInside)];

实现返回根界面和跳转指定界面

-(void)button1Click:(UIButton *)button1

{

// 1.返回跟界面

[self.navigationController popToRootViewControllerAnimated:YES];

// 利用指定返回的方法 返回第二页面

// 取出管理的数组

// NSArray *array = self.navigationController.viewControllers;

// 不能创建新的 要返回原来的那个视图

// SecondViewController *second = array[1];

// [self.navigationController popToViewController:second animated:YES];

}

============================

常⽤属性

1.所有处于栈中的控制器

viewControllers

2.位于栈顶的控制器

topViewController

3.当前正在显⽰的控制器

visibleViewController

4.导航条

版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS中导航控制器的使用 UINavigationController

import UIKit class MyNavigationController: UINavigationController,UINavigationControllerDelegate...
  • linyufengly
  • linyufengly
  • 2017年04月02日 20:01
  • 309

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

UINavigationController 继承于 UIViewController , 以栈的方式管理所 控制的视图控制器 , 至少要有一个被管理的视图控制器 ,这个控制器我们称作导航控制器的根...
  • qq_25475307
  • qq_25475307
  • 2015年08月25日 09:17
  • 1698

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

导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最低面,最后进去的在最上面。在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界面,也...
  • wsb200514
  • wsb200514
  • 2014年09月28日 13:58
  • 4900

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

(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最下面,最后进去的在最上面。在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界...
  • maozhu_yimi
  • maozhu_yimi
  • 2015年06月29日 15:18
  • 1774

iOS个人整理13-导航控制器-UINavigationController

UINavigationController
  • u010330109
  • u010330109
  • 2016年01月22日 17:42
  • 697

iOS 自定义导航控制器UINavigationController

自定义导航控制器: 将导航控制器中通用的部分拿出来统一设置 一般导航条的标题的字体setTitleTextAttribute和背景颜色都是统一的setBackgroundImage,可以在load方法...
  • vbirdbest
  • vbirdbest
  • 2016年09月28日 14:05
  • 857

iOS 去掉UINavigationController(导航控制器)去除底部黑线、改背景颜色或者改为全透明

- (void)viewWillAppear:(BOOL)animated { // 改背景图     [self.navigationController.navigationBar setB...
  • saw471
  • saw471
  • 2016年06月02日 12:00
  • 2312

导航控制器 UINavigationController

// 导航控制器 UINavigationController 是视图控制器的子类, 作用是:控制其他控制器, 属于 容器视图控制器。     // 导航控制器 控制的 控制器是有层级...
  • xlsn0w
  • xlsn0w
  • 2016年02月06日 18:47
  • 138

导航控制器(UINavigationController)(UINavigationController)

导航控制器的基本概念 导航控制器适用于构建分层应用程序的主要工具,管理着多个内容视图的压入和弹出,自身提供了切换视图的动画效果。 父类是UIViewController,是所有视图控制器的...
  • u012890117
  • u012890117
  • 2013年12月17日 20:43
  • 458

导航控制器 ( UINavigationController )

 导航控制器的基本概念      ◊ 导航控制器是用来管理子控制器的切换的大管家      ◊ 导航控制器是个管理型的控制器, 它本身不显示视图内容, 而是管理子控制器的视图显示      ◊...
  • u011410092
  • u011410092
  • 2013年08月22日 14:30
  • 794
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:22.导航控制器UINavigationController
举报原因:
原因补充:

(最多只允许输入30个字)