UINavigationController 详解
2015-05-29 16:53
429 查看
UINavigationController即导航控制器,是iOS里最常用的交互控件之一。下面介绍一下它的详细用法以及一些小的技巧
一.UINavigationController的结构组成。
看下图,UINavigationController有Navigation bar ,Navigation View ,Navigation toobar等组成。
二.创建
在入口类里实现如下代码
或者在根控制器里实现
其中的rootVC就是导航控制器的根控制器,aView是根视图。
三.对导航条的设置
//添加标题
四.界面之间的交互,采用的是出栈、入栈的形式
//进入到下一个界面
//返回之前的界面
//返回指定的界面
//返回根视图
一.UINavigationController的结构组成。
看下图,UINavigationController有Navigation bar ,Navigation View ,Navigation toobar等组成。
二.创建
在入口类里实现如下代码
ViewController *rootVC = [[ViewController alloc]init]; UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:rootVC];
self.window.rootViewController = nav;
或者在根控制器里实现
UINavigationController *nav = [[UINavigationController alloc] init]; UIViewController *aView = [[UIViewController alloc] init]; [nav pushViewController:aView animated:NO];//导航栏的第一个视图不要动画化
其中的rootVC就是导航控制器的根控制器,aView是根视图。
三.对导航条的设置
//添加标题
self.navigationItem.title = @"根视图"; //给导航条加背景图 [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"bg"] forBarMetrics:UIBarMetricsDefault]; //添加titleView,可以用来自定义标题格式,也可以放置图片标题,图片大小要适中 self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"titleView.png"]]; //改变标题的颜色 self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor greenColor] forKey:NSForegroundColorAttributeName]; //添加Logo,只在第一个页面显示,一些项目的主页会用到这个需求 UIView *shareNavleftView = [[UIView alloc] init]; shareNavleftView.frame = CGRectMake(0, 0, 115, 35); UIImageView *img = [[UIImageView alloc] init]; img.image = [UIImage imageNamed:@"logo"]; img.autoresizingMask = UIViewAutoresizingFlexibleWidth; img.frame = shareNavleftView.frame; [shareNavleftView addSubview:img]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:shareNavleftView]; //添加左右按钮 UIBarButtonItem * leftItem = [[UIBarButtonItem alloc]initWithTitle:@"left" style:UIBarButtonItemStylePlain target:self action:@selector(leftClick)]; self.navigationItem.leftBarButtonItem = leftItem ; UIBarButtonItem * rightItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemPause target:self action:@selector(rightItemClick)]; self.navigationItem.rightBarButtonItem = rightItem ; //也可以简化为一句代码 self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"left" style:UIBarButtonItemStylePlain target:self action:@selector(leftClick)]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemPause target:self action:@selector(rightItemClick)];</span>
//隐藏导航栏 [self.navigationController setNavigationBarHidden:YES animated:YES];</span>
四.界面之间的交互,采用的是出栈、入栈的形式
//进入到下一个界面
FirstViewController *firstVC = [[FirstViewController alloc]init]; [self.navigationController pushViewController:firstVC animated:YES];
//返回之前的界面
[self.navigationController popViewControllerAnimated:YES];
//返回指定的界面
[self.navigationController popToViewController:secondVC animated:YES];
//返回根视图
[self.navigationController popToRootViewControllerAnimated:YES];
相关文章推荐
- stringbuffer与stringbuilder的区别
- EqualsBuilder和HashCodeBuilder
- EqualsBuilder和HashCodeBuilder
- EqualsBuilder和HashCodeBuilder
- EqualsBuilder和HashCodeBuilder
- EqualsBuilder和HashCodeBuilder
- load & require
- equinox提供了啥服务
- (转)RMAN-06054: media recovery requesting unknown archived log for thread...
- UI常用方法总结之 UINavigationController
- XHNewsFrameworkExample
- Android QuickContactBadge
- Android QuickContactBadge
- 10.2 NSOperation/NSOperationQueue:提供了一些在GCD中不容易实现的特性,如:限制最大并发数量,操作之间的依赖关系.
- 使用xcodebuild命令行编译iOS应用遇到的一个错误及解决办法
- easyui datagrid中动态改变某行的颜色
- ios8 UITableView设置 setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法
- UIScrollView滚动到制定的位置
- easyUI中datagrid如何展示对象下属性的多个子属性
- iOS之默认搜索UISearchDisplayController