`
zl4393753
  • 浏览: 340365 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

TabViewController+ UINavigationController

 
阅读更多
原文链接:http://xiaoyu.li/2012/creat-navigationcontroller-and-tabbarcontroller-at-the-same-time/

同时创建navigationController和tabBarController

第一种方式是在AppDelegate中将tabBarController作为subView,然后再在tabBarController的基础上增加navigationController,代码如下:
在applicationDidFinishLauchingWithOptions中加入以下代码:

-(BOOL)application:(UIApplication *)applicationDidFinishLauchingWithOptions:(NSDictionary *)lauchingOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    self.window.backgroundColor = [UIColor whiteColor];    

    UITabBarController *tabBarController = [[[UITabBarController alloc] init]autorelease];

    FirstViewController *firstController = [[FirstViewController alloc] initWithNibName:nil bundle:nil];
    UINavigationController *firstNavigation = [[[UINavigationController alloc] initWithRootViewController:firstController]autorelease];
    [firstController release];

    SecondViewController *secondController = [[SecondViewController alloc] initWithNibName:nil bundle:nil];
    UINavigationController *secondNavigation = [[[UINavigationController alloc] initWithRootViewController:secondController]autorelease];
    [secondController release];

    tabBarController.viewControllers = [NSArray arrayWithObjects:firstNavigation,secondNavigation,nil];

    [window addSubview:tabBarController.view];
    [window makeKeyAndVisible];
}


这样之后分别在FirstViewController.m和SecondViewController.m里面加入如下代码:

-(id)init
{
    self = [super initWithNibName:nil bundle:nil];
    if(self)
    {
        UITabBarItem *tabBarItem = [self tabBarItem];
        [tabBarItem setTitle] = @"xxx";
        [tabBarItem setImage] = [UIImage imageNamed:@"xxxxx"];
    }
    return self;
}

-(id)initWithNibName:(NSString *)nibName bundle:(NSBundle *bundle)
{
    return [self init];
}


这样的话,就创建了既有navigationBar又有TabBar的应用了,而且这种方法是tabBar在每个界面都是存在的。

第二种方法,仅仅是在一个页面上显示tabBar,这种方法不像上一种,需要将两个tabBar的界面放在一个根视图(假设为InitialViewController),代码如下:
在applicationDidFinishLauchingWithOptions中加入以下代码:

-(BOOL)application:(UIApplication *)applicationDidFinishLauchingWithOptions:(NSDictionary *)lauchingOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    self.window.backgroundColor = [UIColor whiteColor];

    InitialViewController *initial = [[[InitialViewController alloc]init]autorelease];

    UINavigationController *navigationController = [[[UINavigationController alloc]initWithRootViewController:initial]autorelease];

    [self.window addSubview:navigationController.view];
    [self.window makeKeyAndVisible];
}


然后在InitialViewController.m中import需要加载到tabBar的ViewController,加上如下方法:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    if (self = [super initWithNibName:nil bundle:nil])
    {
        FirstViewController *firstController = [[FirstViewController alloc]init];
        UIImage *image1 = [UIImage imageNamed:@"tabBar1.png"];
        firstController.tabBarItem = [[[UITabBarItem alloc] initWithTitle:@"xxxx" image:image1 tag:0]autorelease];

        SecondViewController *secondController = [[SecondViewController alloc] init];
        UIImage *image2 = [UIImage imageNamed:@"tabBar2.png"];
        secondController.tabBarItem = [[[UITabBarItem alloc] initWithTitle:@"xxxx" image:image2 tag:0]autorelease];

        // 组装TabBar
        self.viewControllers = [NSArray arrayWithObjects:firstController,secondController, nil];

        [firstController release];
        [secondController release];
    }

    return self;
}





分享到:
评论

相关推荐

    页面跳转 UITabBarController+UINavigationController+UIViewController

    在iOS应用开发中,`UITabBarController`、`UINavigationController`和`UIViewController`是三个非常重要的视图控制器类,它们协同工作,构建出用户友好的界面和流畅的导航体验。`UITabBarController`用于实现底部...

    纯代码搭建iOS三级结构(UITabbarController+UINavigationController+UIViewController)

    这个话题将深入探讨如何使用纯代码方式来搭建一个包含三级结构的UI,即`UITabBarController` + `UINavigationController` + `UIViewController`。这个结构常用于大型应用,因为它提供了良好的导航和组织用户内容的...

    UINavigationController+UITabBarController框架

    我们写iOS项目的时候,基本都是一个UINavigationController套一个UITabBarController的形式,就是上面一个导航栏,下面几个按钮的工具条的形式。我写了几个应用,发现如果每次都重新写的话完全就是浪费精力和时间,...

    UITabBarController和UINavigationController混用

    在iOS应用开发中,`UITabBarController` 和 `UINavigationController` 是两种常用且重要的控制器,它们各自负责不同的界面展示逻辑。`UITabBarController` 通常用于实现底部标签栏切换不同功能模块,而 `...

    UINavigationController返回按钮的事件

    上传的demo关于UINavigationController中back按钮的重写方法, UINavigationController的back按妞本身是没有监听方法的,但是我们通过添加类目可以使back按钮具有监听的作用.让我们能在UINavigationController触发返回...

    UINavigationController demo

    在iOS开发中,`UINavigationController`是苹果提供的一种强大的视图控制器容器,它负责管理一个堆栈式的视图控制器序列,通常用于实现类似iOS设备上的导航界面。`UINavigationController`在应用中的作用至关重要,它...

    UINavigationController Demo代码

    在iOS应用开发中,`UINavigationController`是苹果提供的一个核心组件,主要用于管理多个视图控制器的堆栈,实现页面间的导航。本示例代码“UINavigationController Demo”将深入讲解如何在iOS应用中有效地使用`...

    IOS7 UINavigationController滑动Demo

    在iOS开发中,UINavigationController是苹果提供的一种容器类视图控制器,它负责管理一个堆栈式的视图控制器序列。在iOS 7之前,用户通常通过导航栏上的返回按钮或者手势来实现页面间的切换。然而,随着iOS 7的发布...

    UINavigationController详解与使用(二)页面切换和segmentedController

    在iOS开发中,`UINavigationController`是苹果提供的一种强大的视图控制器容器,它负责管理一个堆栈式的视图控制器序列,通常用于实现页面间的导航。本篇将深入讲解`UINavigationController`的页面切换机制以及如何...

    iOS 使用UINavigationController进行页面间跳转

    在iOS应用开发中,页面间的跳转是用户体验的重要组成部分,而`UINavigationController`是苹果提供的一个强大工具,用于管理屏幕间的导航。这个类提供了一种优雅的方式来组织和控制多个`UIViewController`实例,允许...

    UINavigationController 显示隐藏

    在iOS应用开发中,`UINavigationController`是苹果提供的一个核心组件,它负责管理一系列的`UIViewController`对象,形成一个导航栈。这个栈的顶部视图控制器通常显示在屏幕上,而其他视图控制器则被压入栈中等待...

    uinavigationcontroller用法.rar

    uinavigationcontroller是iOS开发中的一个核心组件,它用于管理一系列UIViewController的堆栈,提供导航界面。这个"uinavigationcontroller用法.rar"文件很显然是为了详细解释如何在Objective-C的环境中利用...

    UINavigationController

    `UINavigationController`是iOS开发中的一个核心组件,属于UIKit框架的一部分,主要负责管理应用程序中的视图控制器(UIViewController)栈,实现屏幕之间的导航操作。在iOS应用设计中,它扮演着非常重要的角色,...

    iOS 5 编程源码-UINavigationController

    导航控制器(UINavigationController)用来管理一系列显示层次型信息的场景。一般而言,逐步显示更详细的信息。 导航控制器 -- 用户在场景之间切换时,导航控制器依次将视图控制器压入(push)堆栈中,且当前场景的...

    UINavigationController自定义

    在iOS应用开发中,`UINavigationController`是苹果提供的一个核心组件,用于管理多个`UIViewController`的堆栈,实现页面间的导航。本篇文章将深入探讨如何对`UINavigationController`进行自定义,特别是关于...

    UInavigationController

    UInavigationController笔记

    UINavigationController返回手势失效问题

    * 从iOS7开始,系统为UINavigationController提供了一个interactivePopGestureRecognizer用于右滑返回(pop),但是,如果自定了返回按钮或者隐藏了navigationBar,该手势就失效了。 ## 原因 * 自定义返回按钮或者隐藏...

    让 UINavigationController 支持全屏操作手势.zip

    让 UINavigationController 支持全屏操作手势.zip,A UINavigationController's category to enable fullscreen pop gesture with iOS7 system style.

    UITabBarController和UINavigationController的整合使用

    UITabBarController和UINavigationController的整合使用DEMO,详情见:http://blog.csdn.net/hwe_xc/article/details/50588500

    iphone开发基础控件UINavigationController

    iphone中的基础控件UINavigationController,适合初学者,主要学习UINavigationController的基本属性和常用方法调用。 UINavigationController也是一种常用的容器,跟前边学过的tabbar差不多,在这个容器中可以添加...

Global site tag (gtag.js) - Google Analytics