`
sinye
  • 浏览: 218910 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

iOS UINavigationController与UITabBarController的组合使用

    博客分类:
  • iOS
阅读更多

1.导航类型

UINavigationController 适用于父子页面的跳转

UITabBarController 适用于平级页面的跳转

 

2.presentViewController / dismissViewControllerAnimated和pushViewController / popViewController

(1)只有从UINavigationController导航过来的UIViewController 才可以使用pushViewController / popViewController,从其它导航进入的只能使用presentViewController / dismissViewControllerAnimated

(2)如果A界面是通过presentViewController进入的,那么在A界面里只能使用presentViewController导航,如果A界面是通过UINavigationController包装了一层进入,则可使用pushViewController导航。

(3)如果A界面是一个UITabBarController,进入时是通过presentViewController来导航的,那么子Tab里也只能通过presentViewController来导航,如果进入时是通过UINavigationController包装了一层进入,则可使用[self.tabBarController.navigationController pushViewController:abcdViewController animated:true];这种方式导航。

 

3.修改UINavigationController导航进入后导航栏的图标及文字

UIBarButtonItem* leftBar = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:@selector(homeBack)];

self.navigationItem.leftBarButtonItem = leftBar;

//可添加多个导航按钮

 

//    self.navigationItem.leftBarButtonItems = nil;

//同样右边的导航按钮也可以设置

 

4.创建UITabBarController时需注意,要先创建出来,然后通过UINavigationController包装后才能显示,否则tab子项不显示。创建格式如下

TabOneViewController* oneVC = [[TabOneViewController alloc]init];
    oneVC.view.backgroundColor = [UIColor whiteColor];
    UITabBarItem* item1 = [[UITabBarItem alloc]initWithTitle:@"tab1" image:nil tag:0];
    oneVC.tabBarItem = item1;
    
    TabTwoViewController* twoVC = [[TabTwoViewController alloc]init];
    UITabBarItem* item2 = [[UITabBarItem alloc]initWithTitle:@"tab2" image:nil tag:1];
    twoVC.tabBarItem = item2;

    HomeViewController* homeVC = [[HomeViewController alloc]init];
    NSArray* array = [[NSArray alloc]initWithObjects:oneVC,twoVC, nil];
    homeVC.viewControllers = array;
    
    UINavigationController* navVC = [[UINavigationController alloc]initWithRootViewController:homeVC];
    [self presentViewController:navVC animated:YES completion:^{}];
    
    //下面这种创建了HomeViewController后,HomeViewController下的子Tab不能通过push或者pop导航
    //    HomeViewController* homeVC = [[HomeViewController alloc]init];
    //    [self presentViewController:homeVC animated:YES completion:^{}];

 

 

5.UITabBarController各页面之间的切换

实现UITabBarControllerDelegate协议

//实现协议方法,用于切换Tab时,更改页面的标题
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    NSInteger index = tabBarController.selectedIndex;
    NSString *title;
    switch (index) {
        case 0:
            title = @"Message";
            break;
        case 1:
            title = @"User List";
            break;
    }
    self.title 

参考文章:http://www.tuicool.com/articles/J7nIVbN

 

 

1
0
分享到:
评论

相关推荐

    UINavigationController+UITabBarController框架

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

    iOS 自定义UINavigationController和UITabBarController

    在iOS应用开发中,`UINavigationController`和`UITabBarController`是两个核心的控制器,用于构建常见的用户界面结构。它们分别是导航栈和标签页切换器,但有时开发者可能需要根据应用的需求进行定制,以实现独特的...

    UINavigationController与UITabBarController的使用例子

    在iOS应用开发中,`UINavigationController` 和 `UITabBarController` 是两个非常重要的视图控制器容器,它们用于构建用户界面的导航和切换功能。在这个使用例子中,我们将深入理解这两个类,并通过源码分析和实际...

    iOS开发例程 -- UINavigationController和UITabBarController合用

    很多时候我们创建一个基于UITabBarController的application以后还希望能够在每个tab view都可以实现导航控制,即添加一个UINavigationController来实现tabview内部的view之间的切换,这即是本文所要介绍的。

    页面跳转 UITabBarController+UINavigationController+UIViewController

    当`UITabBarController`与`UINavigationController`结合使用时,常常会在每个`TabBarItem`下嵌套一个`UINavigationController`,这样每个标签页都可以拥有自己的导航结构。例如,你可以在每个`TabBarItem`下面设置一...

    UITabBarController和UINavigationController的整合使用

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

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

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

    UITabBarController和UINavigationController混用

    总之,`UITabBarController` 和 `UINavigationController` 的混用是 iOS 开发中常见的场景,理解它们的协作机制以及如何控制 `tabBar` 的显示与隐藏是提升用户体验的关键。通过实践和学习这样的示例项目,开发者可以...

    ios-UITabBarController.zip

    总的来说,这个压缩包中的示例项目是一个综合性的iOS开发实践,涵盖了`UITabBarController` 与`UINavigationController` 的组合使用,自定义界面元素,以及各种常见的应用设计模式。对于初学者,这是一个学习iOS导航...

    iOS开发UITabBarController和UICollectionView的使用Demo

    在iOS应用开发中,`UITabBarController` 和 `UICollectionView` 是两个非常重要的组件。...对于更复杂的需求,还可以使用 `UINavigationController` 与 `UITabBarController` 结合,实现导航与标签栏的混合使用。

    iOS应用开发中UITabBarController标签栏控制器使用进阶

    `UITabBarController` 的使用进阶主要包括如何与其他控制器如`UINavigationController` 结合使用,以及如何定制标签栏的外观和行为。 1. **联合使用UITabBarController和UINavigationController** `...

    ios自定义UITabBarController

    在iOS应用开发中,`UITabBarController` 是一个非常重要的组件,它用于管理多个视图控制器,并在底部显示一个选项卡栏,用户可以通过点击这些选项卡在不同的视图之间切换。然而,系统的`UITabBarController` 默认...

    IOS 多视图切换加动画

    综上所述,"IOS 多视图切换加动画"的例子可能涵盖了上述技术,包括使用UINavigationController、UITabBarController、自定义动画效果以及页面滑动切换等。通过深入研究"AndyMultiView"中的代码,开发者可以学习到...

    uitabbarcontroller navigationcontroller互相加载导航demo

    在iOS应用开发中,`UITabBarController` 和 `UINavigationController` 是两个非常重要的组件,它们分别用于实现底部标签栏切换和页面的栈式导航。`UITabBarController` 通常用作应用的基础视图控制器,展示多个子...

    iOS+软件开发揭密:iPhone&iPad+企业应用和游戏开发样章.doc

    ### iOS软件开发基础:深入解析iPhone与iPad的企业应用及游戏开发 #### 一、引言 随着移动设备的普及,iOS平台的应用开发成为了许多企业和个人关注的焦点。无论是企业级应用还是游戏开发,掌握iOS开发的基本原理和...

    IOS源码——导航及底部菜单.7z

    开发者可以通过研究源码来学习如何使用UINavigationController和UITabBarController,以及如何自定义这些标准组件以适应自己的应用需求。同时,这也是一个了解版本控制和GitHub工作流程的好机会。

Global site tag (gtag.js) - Google Analytics