22.导航控制器UINavigationController
来源:互联网 发布:javascript用什么写的 编辑:程序博客网 时间:2024/06/05 09:05
导航控制器,是iOS中最常⽤的多视图控制器之⼀,它⽤来管理多个视图控制器。
导航控制器可以认为是管理控制器的控制器,主要管理有层级关系的控制器。
UINavigationController继承于UIViewController,以栈的⽅式管理所控制的视图控制器,⾄少要有⼀个被管理的视图控制器,这个控制器我们称作,导航控制器的根视图控制器。
任何继承⾃UIViewController的类(多态)都可以作为根控制器。
UINavigationController通过栈的⽅式管理控制器的切换,控制⼊栈和出栈
来展⽰各个视图控制器。
UINavigationController的ContentView⾥始终显⽰栈顶控制器的view。
viewControllers属性存储了栈中的所有被管理的控制器
navigationController属性,⽗类中的属性,每个在栈中的控制器,都能通过此属性,获取⾃⼰所在的UINavigationController对象。
⼊栈和出栈
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;
释放导航控制器
[navC release];
释放视图控制器
[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.导航条
navigationBar
0 0
- 22.导航控制器UINavigationController
- 导航视图控制器UINavigationController
- 导航控制器 ( UINavigationController )
- 导航控制器UINavigationController
- UINavigationController导航控制器详解
- UINavigationController导航控制器…
- UINavigationController导航控制器…
- UINavigationController导航控制器…
- UINavigationController 导航控制器
- 导航控制器UINavigationController
- 导航控制器:UINavigationController
- 自定义UINavigationController(导航控制器)
- swift UINavigationController 导航控制器
- UINavigationController 导航视图控制器
- UINavigationController 导航控制器
- UINavigationController 导航控制器
- UINavigationController导航控制器
- UI UINavigationController导航控制器
- 算法思考
- Android SDK Manager更新
- cf599C Day at the Beach(区间合并)
- 开始找工作了
- 【鸟哥的linux私房菜-学习笔记】Linux 常用网络指令
- 22.导航控制器UINavigationController
- win7下Ubuntu Desktop 搭建web服务器
- C语言拾遗
- IOS-30-Hybrid混合开发(二):实现javaScript页面与OC界面互调demo(iOS7之前与之后javascriptCore.framework)
- 1000 赞的程序员高薪职业建议
- Asp.net 在刷新或提交页面后保持滚动条的位置
- LTE Frame Structure - Uplink
- You must restart adb and Eclipse的情况之一
- 深入贯彻落实 Activity 的四种启动模式