<pre name="code" class="objc"><span style="font-size: 14px; font-family: Arial, Helvetica, sans-serif;">基本现在常见的应用里单一使用Navigation导航栏或者单独使用TabBar的情况已经不多见了,除非是特别专一的应用方式,否则常常会见到两种布局方式结合起来,自己在做第一个项目的时候也是遇到了这个需求,当时也是纠结了一些小问题,这里说一下我的方法。
</span>
<span style="font-size: 14px; font-family: Arial, Helvetica, sans-serif;">其实想法很简单,是一个多层包装的模式,也就是先分别把自己有导航需求的界面创建出来之后,分别用UINavigationController把这几个界面控制器包装起来,然后初始化一个一个TabBar包含几个Navigation,每个Navigation再包含各自的界面控制器的结构,代码如下:</span>
//创建两个自己的界面控制器 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]; tabBar.view.frame = CGRectMake(0, -20, 320, 480);//不加这一句将会有一段状态栏高度的空白区域
此外,导航栏的标题可以在各个页面中自行设置,比如在viewDidload方法中,如下:
self.title = @"标题"
ITabBarItem *item = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemSearch tag:1];//设置tabbar样式 self.tabBarItem = item;