代码改变世界

Iphone将window的跟视图替换成自定义的TabBar视图

2012-03-17 21:44  htc开发  阅读(243)  评论(0编辑  收藏  举报

今天感觉很累了,就只将代码添出来,然后简单的做下说明:

我们在项目中应该会遇到UINavigationController和UITabBarController不能同时存在于window视图,但是往往项目是这样的,先需要UINavigationController视图作为根视图(比如说登录界面,登录界面是不需要下面的tabbar的),然后登录进去后就需要一个UITabBarController视图,所以让人比较的纠结,下面将解决这个问题,先建一个基于Navigation的项目,项目会自动将UINavigationController加入window根视图中,然后在rootviewcontroller(自动生成的)页面中加入一个button,点击这个button后就会将window视图中的UINavigationController删除并将自定义的UITabBarController加入window根视图中,之所以要自定义UITabBarController,是因为自定义的东西样式背景等随便自己变,很方便,并且这些自定义的UITabBarController代码以后都可以重用的,修改的部分很少,当然你可以用iphone自带的UITabBarController:

1.建一个基于导航的项目,然后在RootViewController.h中将项目自动生成的delegate导入进来,在TraverNotepadForIphoneAppDelegate.m文件中将为下面定义的rootdelegate赋值:


2. 在RootViewController.xib中添加一个UIButton,下面是这个button的点击事件的方法:


3.下面的代码是自定义的UITabBarController以及自定义tabbar需要的另外两个文件:

先是新建一个继承于UIViewController的类,记得将自动生成xib文件的复选筐选上,两个文件的代码如下,这里面用到了几个类,这需要自己定义,知识当作测试而已,这里就没添出来了:



然后是新建一个继承于UIView的类,这是自定义tabar的工具类,代码如下:



4.在自动生成的TraverNotepadForIphoneAppDelegate类中添加如下代码:

TraverNotepadForIphoneAppDelegate.h文件:

TraverNotepadForIphoneAppDelegate.m文件:


5.最后记得在MainWindow.xib中拖入一个View Controller,并将其class指定为MyCustomTabBarViewController,然后将该View Controller与

TraverNotepadForIphoneAppDelegate类中的mycustomtabbarview连接,并将TraverNotepadForIphoneAppDelegate类中的myrootview与MainWindow.xib中的RootViewController连接。