ios中UINavigation和UITabBar的结合

2021-11-23 10:39:50 浏览数 (2)

基本现在常见的应用里单一使用Navigation导航栏或者单独使用TabBar的情况已经不多见了,除非是特别专一的应用方式,否则常常会见到两种布局方式结合起来,自己在做第一个项目的时候也是遇到了这个需求,当时也是纠结了一些小问题,这里说一下我的方法。

其实想法很简单,是一个多层包装的模式,也就是先分别把自己有导航需求的界面创建出来之后,分别用UINavigationController把这几个界面控制器包装起来,然后初始化一个一个TabBar包含几个Navigation,每个Navigation再包含各自的界面控制器的结构,代码如下:

代码语言:javascript复制
//创建两个自己的界面控制器  
ViewControllerOne *one = [[ViewControllerOne alloc]initWithNibName:@"ViewControllerOne" bundle:nil];  
ViewControllerTwo *two= [[ViewControllerTwo alloc]initWithNibName:@"ViewControllerTwo" bundle:nil];  
//分别用导航栏控制器包装起来  
UINavigationController *NavViewOne = [[UINavigationController alloc]initWithRootViewController:one];  
UINavigationController *NavViewTwo = [[UINavigationController alloc]initWithRootViewController:two];  
//初始化TabBar控制器  
UITabBarController *tabBar = [[UITabBarController alloc]init];  
//把两个导航栏控制器添加到TabBar控制器中去  
[tabBar setViewControllers:[NSMutableArray arrayWithObjects:NavViewOne, NavViewTwo, nil nil];  
tabBar.view.frame = CGRectMake(0, -20, 320, 480);//不加这一句将会有一段状态栏高度的空白区域  

此外,导航栏的标题可以在各个页面中自行设置,比如在viewDidload方法中,如下:

代码语言:javascript复制
self.title = @"标题"  

要设置各个界面的tab样式,可以在initWithNibName方法中加入如下代码:

代码语言:javascript复制
ITabBarItem *item = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemSearch tag:1];//设置tabbar样式  
self.tabBarItem = item;  

0 人点赞