视图控制器-tabbarcontroller

常见的视图控制器切换方式

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

在tabbarcontroller里有个viewcontrollers属性,是个数组。保存用到的所有的控制器。

视图控制器-tabbarcontroller

可以通过连线的方式给tabbarcontroller添加视图控制器,在tabbarcontroller视图上点击右键,在viewcontrollers属性上连接点到新添加的视图控制器。

视图控制器-tabbarcontroller

点钟每一个子视图控制器的标题项 tabbaritem,都可以设置文字和图像

视图控制器-tabbarcontroller

系统内部会定义一些标志

视图控制器-tabbarcontroller

 一般用的是自定义模式,自己来定义标题和图像

视图控制器-tabbarcontroller

还可以设置每一项的信息提示条数

视图控制器-tabbarcontroller

如果要设置自定义的图标,图标的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

 如果使用了tabbarcontroller控制器,则子视图控制器里

self.parentViewController;

    self.tabBarController;

这2个类是同一个类。

可以根据self.tabBarItem来设置标题,图像,以及右上角id值

self.tabBarItem.title = @"hello world";

self.tabBarItem.badgeValue = [NSStringstringWithFormat:@"%d",10];

视图控制器-tabbarcontroller

 视图控制器-tabbarcontroller

 有时候要给tabbarcontroller里的视图控制器显示通知消息。但是在程序加载的时候,默认只实例化了第一个视图控制器。其他视图控制器没有被实例化,这样其他视图控制器里的通知消息就不会显示出来。可以在第一个视图控制器里,做一个遍历,遍历tabbarcontrolller里的所有视图控制器。这样其他的视图控制器也就被实例化。通知消息就可以显示出来。

 

 如果在tabbarcontroller里的任何一个子视图控制器里model方式出来一个视图控制器,都会覆盖当前的视图,tabbarcontroller将被盖在下边。

 

 第三种方式:代码方式创建tabbarcontroller

1) 先创建一个空项目

2)添加多个带xib的视图控制器类

3)在appdelegate方式里 创建uitabbarcontroller。

4)实例化创建的多个视图控制器。并且以快速方式设置到uitabbarcontroller里的viewcontrollers属性上。

5)在实例化每个视图控制器的时候都可以设置自己的tabbaritem的相关属性。标题,图片,通知消息。

 

 

tabbarcontroller在实例化的时候,就把内部所有的视图控制器都实例化了。