常见的视图控制器切换方式
1)tabbar选项卡
以uitabbarcontroller为容器,以平行的方式管理子视图控制器。
2)push推送
以uinavigationcontroller控制器为容器,以栈的方式管理子视图。后进先出。
3)model模态窗口
以模态窗口方式显示新的视图控制器,在新的视图控制器关闭之前,不能与原的试图控制器交互。
模式窗口通常用来做用户登录,帮助信息,等功能。
tabbarcontroller的几个重要的属性
1.title标题
2.image图像,图片要打开alpha通道,一般是32*32的尺寸,而且是PNG格式
3.badgValue:右上角通知信息条数
4.viewControllers:所有的视图控制器
tabbarcontroller,里边平行的视图控制器都是同事存在内存里。有些内存浪费。
使用方式一:storyboard方式
1) 创建带storyboard的单视图控制器
2)删除storyboard上的试图控制器
3)拖一个tabbarcontroller控制器到视图
在tabbarcontroller里有个viewcontrollers属性,是个数组。保存用到的所有的控制器。
可以通过连线的方式给tabbarcontroller添加视图控制器,在tabbarcontroller视图上点击右键,在viewcontrollers属性上连接点到新添加的视图控制器。
点钟每一个子视图控制器的标题项 tabbaritem,都可以设置文字和图像
系统内部会定义一些标志
一般用的是自定义模式,自己来定义标题和图像
还可以设置每一项的信息提示条数
如果要设置自定义的图标,图标的alpha channel必须打开。否则不会显示出来。
使用方式二:xib方式创建tabbarcontroller
1) 创建空应用程序
2)添加一个xib文件,mainwindow
3) 设置应用程序的启动的时候加载的main interface文件是mainwindow
4) 设置xib文件里的file's owner是uiapplication
5) 在xib文件里添加一个nsobject对象,并且设置类是appdelegate
6) 在appdelegate头文件里在window成员变量之前添加iboutlet,使之可以连线。
7)在xib文件里添加window对象。并且在代表appdelegate的nsobject对象上点击右键,连接window到刚添加的window对象上,这样就设置了window对象
8)在xib里添加uitabbarcontroller对象
9)在windows上点击右键,连接rootcontroller到港添加的uitabbarcontroller,把tabbarcontroller设置成主视图控制器。
10)uitabbarcontroller默认会带了2个视图控制器,这时候可以在项目里廷加试图控制器类,并且要勾选xib文件,就是创建的视图控制器是带xib视图的
11)分别设置tabbarcontroller里带的视图控制器到刚添加的视图控制器类上。
12) 然后对添加的视图控制器,分别使用辅助视图,进行连线。
13)如果要添加新的视图可控制器,可以直接拖动一个视图控制器到uitabbarcontroller上。再添加其对应的视图控制器类,要带上xib文件。然后再编辑对应的视图控制器类。
如果控制器使用了xib文件,下边方法就不会再被执行。
如果使用了tabbarcontroller控制器,则子视图控制器里
self.parentViewController;
self.tabBarController;
这2个类是同一个类。
可以根据self.tabBarItem来设置标题,图像,以及右上角id值
self.tabBarItem.title = @"hello world";
self.tabBarItem.badgeValue = [NSStringstringWithFormat:@"%d",10];
有时候要给tabbarcontroller里的视图控制器显示通知消息。但是在程序加载的时候,默认只实例化了第一个视图控制器。其他视图控制器没有被实例化,这样其他视图控制器里的通知消息就不会显示出来。可以在第一个视图控制器里,做一个遍历,遍历tabbarcontrolller里的所有视图控制器。这样其他的视图控制器也就被实例化。通知消息就可以显示出来。
如果在tabbarcontroller里的任何一个子视图控制器里model方式出来一个视图控制器,都会覆盖当前的视图,tabbarcontroller将被盖在下边。
第三种方式:代码方式创建tabbarcontroller
1) 先创建一个空项目
2)添加多个带xib的视图控制器类
3)在appdelegate方式里 创建uitabbarcontroller。
4)实例化创建的多个视图控制器。并且以快速方式设置到uitabbarcontroller里的viewcontrollers属性上。
5)在实例化每个视图控制器的时候都可以设置自己的tabbaritem的相关属性。标题,图片,通知消息。
tabbarcontroller在实例化的时候,就把内部所有的视图控制器都实例化了。