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的更多相关文章

  1. ANDROID L——Material Design详解(UI控件)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...

  2. WinForm/Silverlight多线程编程中如何更新UI控件的值

    单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么 ...

  3. 富客户端 wpf, Winform 多线程更新UI控件

    前言 在富客户端的app中,如果在主线程中运行一些长时间的任务,那么应用程序的UI就不能正常相应.因为主线程要负责消息循环,相应鼠标等事件还有展现UI. 因此我们可以开启一个线程来格外处理需要长时间的 ...

  4. UI控件(复习一下)

    如何修改控件状态• 可见,确实需要经常修改控件状态• 那如何去修改控件的状态呢?方法很简单➢ 每一个UI控件都是一个对象➢ 修改UI控件的状态,其实就是修改控件对象的属性➢ 比如修改UILabel显示 ...

  5. IOS学习资源收集--开发UI控件相关

    收集的一些本人了解过的iOS开发UI控件相关的代码资源(本文持续补充更新) 内容大纲: 1.本人在github上也上传了我分装好的一些可重复利用的UI控件 2.计时相关的自定义UILabel控件 正文 ...

  6. 《深入理解Windows Phone 8.1 UI控件编程》基于最新的Runtime框架

    <深入理解Windows Phone 8.1 UI控件编程>本书基于最新的Windows Phone 8.1 Runtime SDK编写,全面深入地论述了最酷的UI编程技术:实现复杂炫酷的 ...

  7. AppleWatch___学习笔记(二)UI布局和UI控件

    1.UI布局 直接开发,你会发现Apple Watch并不支持AutoLayout,WatchKit里有个类叫做WKInterfaceGroup,乍一看像是UIView,但是这货其实是用来布局的.从 ...

  8. (转).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 ...

  9. Atitit. .net c# web 跟客户端winform 的ui控件结构比较

    Atitit. .net c# web 跟客户端winform 的ui控件结构比较 .net   4.5 webform Winform 命名空间 System.Web.UI.WebControls ...

随机推荐

  1. github桌面工具commit不了解决

    这样发现github上还是空文件,  因为要重新添加过 1.  git add -A  添加所有文件 2. git commit -m "xxx" 3.  git push -u ...

  2. Java并发计数器探秘

    前言 一提到线程安全的并发计数器,AtomicLong 必然是第一个被联想到的工具.Atomic* 一系列的原子类以及它们背后的 CAS 无锁算法,常常是高性能,高并发的代名词.本文将会阐释,在并发场 ...

  3. Java报表生成技术

    报表是以格式化的形式输出数据,并对数据进行分组.汇总.计算等操作.通过报表.图表或者嵌入图片图像等形式来丰富数据的显示. 报表生成的步骤: 后台数据抽取(DAO层): 数据项逻辑运算(业务逻辑层): ...

  4. 通过ssh隧道访问mysql(转载)

    我的机器可以连接服务器A,A可以访问服务器B上的mysql,但是我的机器不能访问B,所以我需要建立一个我本地机器到服务器A的ssh隧道来访问服务器B上的mysql. 理一下思路: 1.我要ssh的服务 ...

  5. Oracle 11R2 linux上新建实例

    Step1. root用户远程登陆到linux主机上.执行下面的命令切换到oracle用户,使对应的环境变量配置文件生效. # su oracle# source ~/.bash_profile St ...

  6. SlidingMenu官方实例分析8——CustomAnimation

    CustomAnimation 构造方法: 其中CanvasTransformer对象是重点,因为他是实现动画的对象,设置对象的代码如下: 其中变化方法如下: 其中的canvas.scale(),方法 ...

  7. MEF基础概念学习笔记

    MEF,是微软.net框架下的一个框架类库.可以使你的程序低耦合的加载扩展.在开发插件,或者开发一些需要灵活扩展的功能的时候经常用到.例如微软给出的计算器的例子.当你开发计算器的时候,初始功能只提供了 ...

  8. Ubuntu 下Apache安装和配置2

    在Ubuntu上安装Apache,有两种方式:1 使用开发包的打包服务,例如使用apt-get命令:2 从源码构建Apache.本文章将详细描述这两种不同的安装方式. 方法一:使用开发包的打包服务—— ...

  9. iOS开发常见问题(不断更新)

    1.如何从程序退出到桌面 在单击事件中 exit(0);即可. 2.如何强制横屏 在你需要横屏的控制器里加入如下代码 - (BOOL)shouldAutorotate{ return NO; } - ...

  10. R-ArcGIS探秘(1)安装以及Sample执行

    在今年的全球用户大会上,Esri官方发布了R-ArcGIS的官方演示样例,在ArcMap和ArcGIS pro中,直接通过Toolbox能够调用R的分析工具包,将R的分析能力直接作用在ArcGIS上面 ...