当前位置:编程学习 > wap >>

三种方法让TabBarController和NavigationController并存

TabBarController中需要使用NavigationController,这样可以实现TabbarController中的视图导航。我总结了三种方法去实现,以供大家参考。
第一种:最简单的是从NavigationController下手,先用TabBarController建立XIB文件,在XIB上拉出相应的Tabbar。这时如果去建立导航,只需要在上一页和下一页之间建立相应的对应关系。而如何建立对应关系呢,请看下面的代码:
EDUThreeViewController *th = [[EDUThreeViewController alloc] initWithNibName:@"EDUThreeViewController" bundle:nil];
    UINavigationController *n = [[UINavigationController alloc] initWithRootViewController:th];
[self presentViewController:n animated:YES completion:nil];
但我现在了解到这种仅支持弹出下一级视图。
第二种:也是先建立TabBarController的XIB,然后在TabBar上拖入NavigationController,(这里可以根据自己的需要的拖入NavigationControlle或TabBarItem,拖入NavigationController的页面就自动有NavigationBar了)。
如下图:
http://my.csdn.net/my/album/detail/1444381
就这样,你就可以在相应的视图中进行导航的设计了。但会在下一级视图中出现TabBar,如果不需要可以通过代码去除。所有代码如下:
EDUStuViewController *stuViewController = [[EDUStuViewController alloc] init];
    stuViewController.hidesBottomBarWhenPushed = YES;//去掉TabBar
[self.navigationController pushViewController:stuViewController animated:YES];
第三种:前面说的都是在XIB视图中的,这里我们要说的是在代码中实现的。这里需要在delegate中进行TabBarController和NavigationController的结合。实例代码如下:
- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    //Override point for customization after application launch.
    //TabBar上的第一个视图 www.zzzyk.com 
EDUaaViewController *aa = [[EDUaaViewController alloc] initWithNibName:@"EDUaaViewController" bundle:nil];
//把ViewController加入到NavigationController中
UINavigationController *aaNav = [[UINavigationController alloc] initWithRootViewController:aa];
//TabBar上的第二个视图
EDUbbViewController *bb = [[EDUbbViewController alloc] initWithNibName:@"EDUbbViewController" bundle:nil];
//把ViewController加入到NavigationController中
    UINavigationController *bbNav = [[UINavigationController alloc] initWithRootViewController:bb];
    //把navigationController放入数组中
    NSArray *controllerArray = [[NSArray alloc] initWithObjects:aaNav,bbNav,nil];
    //建立TabBarController,需要在.h中先声明
    tabBarController = [[UITabBarController alloc] init];
    tabBarController.delegate = self;
    //把navigationController的数组加入到tabBarController中去
    tabBarController.viewControllers = controllerArray;
    tabBarController.selectedIndex = 0;
    [(UITabBarItem *)[tabBarController.tabBar.items objectAtIndex:0] setTitle:@"体检数据"]; 
    [(UITabBarItem *)[tabBarController.tabBar.items objectAtIndex:1] setTitle:@"健康档案"];
    //UIViewController* activeController =tabBarController.selectedViewController;
    [self.window addSubview:tabBarController.view];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}
补充:移动开发 , IOS ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,