18-UINavigationController 导航控制器
来源:互联网 发布:佛山网页美工培训 编辑:程序博客网 时间:2024/06/05 16:49
1.导航控制器概念 高度44
管理型控制器,用来管理子控制器切换的大管家,本身不显示内容,而是管理子控制器的视图显示
windows->导航栏根控制器->导航栏->视图控制器
UINavigationController的使用步骤
(1)初始化UINavigationController
(2)设置UIWindow的rootViewController为UINavigationController
(3)根据具体情况,通过push方法添加对应个数的子控制器
说明:
导航控制器是通过栈的形式来管理子控制器的(先进后出)
显示在导航控制器上得view永远是栈顶控制器的view
一个导航控制器只有一个导航条,也就是说所有的自控制器公用一个导航条。
2.创建导航控制器
2.1第一步:创建第一个导航控制器//1.创建一个根控制器RootViewController *root = [[RootViewController alloc] init]; //2.创建一个导航控制器,并在初始化时赋值一个根控制器UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:root];//3.将windows的根控制器设置为导航控制器self.window.rootViewController = navigation;第二步:导航到下一个导航控制器//1.创建第二个试图控制器SecondViewController *sec = [[SecondViewController alloc] init];//2.导航到第二个导航控制器[self.navigationController pushViewController:sec animated:YES]; //3.设置不隐藏导航栏和下方工具栏[self.navigationController setNavigationBarHidden:NO animated:YES];[self.navigationController setToolbarHidden:NO animated:YES];
3.设置导航栏标题
//1.方式一: self.title = @"这是一个标题"; //2.方式二:其实是给导航项中的标题设置的 self.navigationItem.title = @"这是个标题"; //3.方式三: //iOS6以后使用的方法self.navigationItem.title = @"这是个标题"; NSDictionary *dic = @{ NSFontAttributeName:[UIFont systemFontOfSize:20], NSForegroundColorAttributeName:[UIColor redColor] }; [self.navigationController.navigationBar setTitleTextAttributes:dic]; //4.自定义视图 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 90, 40)]; label.backgroundColor = [UIColor greenColor]; self.navigationItem.titleView = label;
4.取得当前导航项,导航项是视图控制器的
self.navigationItem.title = @“”;
效果:
5.导航控制器的常用属性和方法
常用方法//弹到上一个视图控制器 有动画效果[self.navigationController popViewControllerAnimated:YES];//弹到根视图控制器 有动画效果[self.navigationController popToRootViewControllerAnimated:YES];//弹到一个指定视图控制器 有动画效果[self.navigationController popToViewController:<#(UIViewController *)#> animated:YES];[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES]; for (UIViewController *temp in self.navigationController.viewControllers) { if ([temp isKindOfClass:[你要跳转到的Controller class]]) { [self.navigationController popToViewController:temp animated:YES]; } }
6.navigationBar设置导航栏风格和颜色
//设置导航栏颜色navigation.navigationBar.barTintColor = [UIColor lightGrayColor];//设置导航栏风格navigation.navigationBar.barStyle = UIBarStyleBlackTranslucent;//设置导航栏为透明navigation.navigationBar.translucent = YES;//设置导航栏背景图片[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"btn_02"] forBarMetrics:UIBarMetricsDefault];
7.UIBarButtonltem设置导航栏按钮 和 添加提示用输入的文字
UIBarButtonltem是用来显示导航栏左侧和右侧的按钮UIBarButtonltem修改按钮时使用//UIBarButtonItem第一种初始化方法,传入一个按钮名称,并实现一个方法UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStyleDone target:self action:@selector(leftAction:)];self.navigationItem.leftBarButtonItem = left;//自定义返回按钮UIBarButtonItem *btn = [UIBarButtonItem alloc] initWithCustomView:<#(UIView *)#>;self.navigationItem.backBarButtonItem = btn;//开启手势navigation.interactivePopGestureRecognizer.delegate = self;
效果:
//UIBarButtonItem第二种初始化方法,传入一个按钮,UIButton *right = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 40, 30)];[right setImage:[UIImage imageNamed:@"btn_02"] forState:UIControlStateNormal];UIBarButtonItem *b = [[UIBarButtonItem alloc] initWithCustomView:button];self.navigationItem.rightBarButtonItem = b;
效果:
//UIBarButtonItem第二种初始化方法,传入一张图片,UIBarButtonItem *u = [[UIBarButtonItem alloc] initWithImage:(UIImage *) style:(UIBarButtonItemStyle) target:(id) action:(SEL)];
效果:
//修改返回标题UIBarButtonItem *title = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:nil];self.navigationItem.backBarButtonItem = title;
效果:
//设置提示框self.navigationItem.prompt = @"载入";
3秒退出
8.导航控制器的委托方法
通过设置代理监听视图控制器的切换
//视图控制器将要显示时调用- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{ NSLog(@"视图控制器将要显示");}//试图控制器已经显示时调用- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{ NSLog(@"试图控制器已经显示");}
9.导航控制器总结
0 1
- 18-UINavigationController 导航控制器
- 导航视图控制器UINavigationController
- 导航控制器 ( UINavigationController )
- 导航控制器UINavigationController
- UINavigationController导航控制器详解
- UINavigationController导航控制器…
- UINavigationController导航控制器…
- UINavigationController导航控制器…
- UINavigationController 导航控制器
- 导航控制器UINavigationController
- 导航控制器:UINavigationController
- 自定义UINavigationController(导航控制器)
- swift UINavigationController 导航控制器
- UINavigationController 导航视图控制器
- UINavigationController 导航控制器
- UINavigationController 导航控制器
- UINavigationController导航控制器
- UI UINavigationController导航控制器
- HDU 2032 杨辉三角
- error LNK2019: 无法解析的外部符号 ___glutInitWithExit@12,该符号在函数 _glutInit_ATEXIT_HACK@8 中被引用 1>GEARS.obj : e
- hashMap
- 基于 Web 的 Go 语言 IDE - Wide 1.3.0 发布!
- java多线程之停止线程
- 18-UINavigationController 导航控制器
- android内存泄露
- gsoap使用方法,解析wsdl文档
- python题目3
- Struts2之如何使用简单的UI标签
- 正则表达式总结
- Docker,云时代的程序交付方式
- 黑马程序员——Java基础---Java语言中的关键字
- 九度oj 1018