UI控件之UINavigationController
ViewController1 *vc1=[[ViewController1 alloc]init];
UINavigationController *nav1=[[UINavigationController alloc]initWithRootViewController:vc1];
自动设置导航栏上的标题,自动设置标签栏项上的标题为此值
vc1.title=@"界面1";
设置导航栏上的标题
vc1.navigationItem.title=@"jiemian1";
设置标签栏项上的标题
nav1.tabBarItem.title=@"界面1";
设置标签栏项上的图片
UIImage *img0=[UIImage imageNamed:@"tab_0.png"];
img0=[img0 imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
nav1.tabBarItem.image=img0;
设置徽标
vc1.tabBarItem.badgeValue=@"2";
UINavigationController:导航控制器
父类是IViewController,容器控制器,采用栈的方式对视图控制器进行管理,视图控制器通过出栈、入栈进行切换一般用于复杂的分层数据结构维护一个栈容器,任意类型的视图控制器对象都可以添加到其中
RootViewController *root=[[RootViewController alloc]init];
实例化导航控制器时需提供一个视图控制器对象,作为其根视图控制器,当程序启动时自动将根视图控制器对象的view加载到window上
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:root];
self.window.rootViewController=nav;
实例化第2个视图控制器对象
SecondViewController *second=[[SecondViewController alloc]init];
self.navigationController获取管理它的导航控制器对象,前提条件是self已经添加到导航控制器对象中将second压入到栈容器的栈顶,切换视图,第2个参数是是否有动画效果
[self.navigationController pushViewController:second animated:YES];
将栈顶元素(视图控制器对象)出栈,第2个参数设置动画效果
[self.navigationController popViewControllerAnimated:YES];
将栈底以上所有的视图控制器对象出栈(返回到根视图控制器界面)
[self.navigationController popToRootViewControllerAnimated:YES];
获取导航控制器对象管理的所有的视图控制器对象,它们在数组中的顺序与在栈容器中的顺序一致
NSArray *array= self.navigationController.viewControllers;
直接返回到某个视图控制器对象(会将该视图控制器对象上面的都从栈容器中移除)
[self.navigationController popToViewController:array[1] animated:YES];
导航控制器只有一个导航栏,所有被导航控制器管理的视图控制器共用一个导航栏
设置navigationBar的样式,有4个取值,只有2种效果
self.navigationController.navigationBar.barStyle=UIBarStyleDefault;
设置navigationBar的背景色
self.navigationController.navigationBar.backgroundColor=[UIColor redColor];
iOS6.0后用barTintColor属性可以设置navigationBar的背景色
self.navigationController.navigationBar.barTintColor=[UIColor greenColor];
iOS6.0后用tintColor属性设置navigationBar上的字体颜色
self.navigationController.navigationBar.tintColor=[UIColor yellowColor];
设置navigationBar的背景图片,如果图片高度是44像素,状态栏会显示为黑色,否则状态栏也会用图片填充
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navBg.png"] forBarMetrics:UIBarMetricsDefault];第2个参数是设置什么模式下有背景图片,UIBarMetricsCompact肖像模式下没有背景图片,风景模式下有UIBarMetricsDefault:肖像和风景模式下都有背景图片
设置是否需要裁减背景图片(状态栏是否也有背景图片)
self.navigationController.navigationBar.clipsToBounds=YES;
设置是否隐藏navigationBar
self.navigationController.navigationBarHidden=YES;
设置隐藏时是否带有动画效果
[self.navigationController setNavigationBarHidden:YES animated:YES];
设置navigationBar为隐藏状态,默认为显示
self.navigationController.navigationBarHidden=YES;
iOS7.0中push到导航控制器中,如果view的背景色为clearColor,push时会有卡顿的现象,解决办法就是设置push的背景色
self.view.backgroundColor=[UIColor whiteColor];
每个视图控制器需要单独设计自己navigationBar上的navigationItem
设置navigationBar上的标题,居中显示
当从下一个视图控制器返回时其左侧按钮上显示的是该标题,如果该标题过长,会显示"Back"而非标题
self.navigationItem.title=@"Root";
设置视图控制器的标题(自动将navigationBar上标题也设置为此值)
self.title=@"Home";
UIImage *image1=[UIImage imageNamed:@"itemImage.png"];
设置图片的渲染模式:使用原始样式显示,不渲染
image1=[image1 imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
设置navigationBar的左侧按钮(一个)
self.navigationItem.leftBarButtonItem=item1;
一个导航控制器只有一个toolBar,被导航控制器管理的视图控制器共有一个toolBar
将toolBar显示,默认是隐藏的,高度44
self.navigationController.toolbarHidden=NO;
UIBarButtonItem *item1=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:nil action:nil];
UIBarButtonItem *item2=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemPause target:nil action:nil];
UIBarButtonItem *item3=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
NSArray *array=@[item3, item1,item3,item2,item3];
设置当前视图控制器的toolbar上的项
self.toolbarItems=array;
UI控件之UINavigationController的更多相关文章
- ANDROID L——Material Design详解(UI控件)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...
- WinForm/Silverlight多线程编程中如何更新UI控件的值
单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么 ...
- 富客户端 wpf, Winform 多线程更新UI控件
前言 在富客户端的app中,如果在主线程中运行一些长时间的任务,那么应用程序的UI就不能正常相应.因为主线程要负责消息循环,相应鼠标等事件还有展现UI. 因此我们可以开启一个线程来格外处理需要长时间的 ...
- UI控件(复习一下)
如何修改控件状态• 可见,确实需要经常修改控件状态• 那如何去修改控件的状态呢?方法很简单➢ 每一个UI控件都是一个对象➢ 修改UI控件的状态,其实就是修改控件对象的属性➢ 比如修改UILabel显示 ...
- IOS学习资源收集--开发UI控件相关
收集的一些本人了解过的iOS开发UI控件相关的代码资源(本文持续补充更新) 内容大纲: 1.本人在github上也上传了我分装好的一些可重复利用的UI控件 2.计时相关的自定义UILabel控件 正文 ...
- 《深入理解Windows Phone 8.1 UI控件编程》基于最新的Runtime框架
<深入理解Windows Phone 8.1 UI控件编程>本书基于最新的Windows Phone 8.1 Runtime SDK编写,全面深入地论述了最酷的UI编程技术:实现复杂炫酷的 ...
- AppleWatch___学习笔记(二)UI布局和UI控件
1.UI布局 直接开发,你会发现Apple Watch并不支持AutoLayout,WatchKit里有个类叫做WKInterfaceGroup,乍一看像是UIView,但是这货其实是用来布局的.从 ...
- (转).NET 4.5中使用Task.Run和Parallel.For()实现的C# Winform多线程任务及跨线程更新UI控件综合实例
http://2sharings.com/2014/net-4-5-task-run-parallel-for-winform-cross-multiple-threads-update-ui-dem ...
- Atitit. .net c# web 跟客户端winform 的ui控件结构比较
Atitit. .net c# web 跟客户端winform 的ui控件结构比较 .net 4.5 webform Winform 命名空间 System.Web.UI.WebControls ...
随机推荐
- Vue 组件4 动态组件
动态组件 通过使用保留的<component>元素,动态的绑定到它的is特性,我们让多个组件同时使用同一个挂载点,并动态切换: var vm = new Vue({ el: '#examp ...
- Vue 组件 非父子组件通信
有时候两个组件也需要通信(非父子关系),在简单的场景下,可以使用一个空的vue实例作为中央事件总线: var bus = new Vue(); //触发组件a中的事件 bus.$emit('id-se ...
- ThreadLocal使用方法
创建一个Bean,通过不同的线程对象设置Bean属性,保证各个线程Bean对象的独立性. /** * Created by IntelliJ IDEA. * User: leizhimin ...
- c++如何new构造函数是protected的对象
如果确实要new的话,可以继承这个类,然后new派生类,再转换为基类指针
- one thinkphp 文档
http://document.onethink.cn/manual_1_0.html#onethink_usehelp_config 官网:http://www.onethink.cn/topic/ ...
- 第一百八十八节,jQuery,选项卡 UI
jQueryUI,选项卡 UI 学习要点: 1.使用 tabs 2.修改 tabs 样式 3.tabs()方法的属性 4.tabs()方法的事件 5.tabs 中使用 on 选项卡(tab),是一种能 ...
- html 模版
使用后台开发语言的都很了解语言的动态性给开发带来的好处,PHP,aspx,jsp页面都可以直接使用相应的语法和变量,输出的事就交给解释器或编译器了,用起来方便快捷,但需要额外的解释工作: 例如php模 ...
- C和MATLAB中:同时对多个变量连续赋值
C语言中绝对不可以连续赋值!!!这是C语言的基本要求. 可以int a,b,c; a=5;b=5;c=5; 或者int a =5;int b=5;int c=5; 但是! 绝对不可以:int a=b= ...
- Android初体验-D3
1. UI界面布局. (即可用XML控制布局也可采用Java代码布局,不过在实际应用中是两者混合控制UI界面,为什么呢,因为XML适用于固定的不易改变的组件布局,Java程序控制常变的组件...其控制 ...
- Atitit.软件仪表盘(4)--db数据库子系统-监測
Atitit.软件仪表盘(4)--db数据库子系统-监測 连接数::: 死锁表列表:死锁基础列表(近期几条记录,时间,sql等) 3.对server进行监控.获取CUP.I/O使用情况 4.对数据 ...