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

UITabBarController 标签栏控制器-IOS开发

    博客分类:
  • IOS
 
阅读更多

在 UIKit 中UITabbar 代表了标签栏,而 UITabBarController 对其进行了封装,令多个不同的视图管理与切换变的更加轻松。

构建一个标签栏控制器,首先要为每个按钮准备一个单独的页。每一页都应被创建为UIViewController对象。

构建一个控制器数组:

你的应用程序可能有多个不同的试图控制器,来实现不同的功能。如果你在写一个音乐播放器,可能会有一些控制器,如:MusicList、CurrentPlay、Favourite、SingerList、Settings 等。在创建你的标签栏之前,你应该首先创建一个数组,在其中放置你希望在标签栏中显示的视图控制器对象。

 

  1.  //生成各个视图控制器  
  2.     MusicList* musicList = [[[MusicList alloc]init]autorelease];  
  3.     CurrentPlay* currentPlay = [[[CurrentPlay alloc]init]autorelease];  
  4.     Favourite* favourite = [[[Favourite alloc]init]autorelease];  
  5.     SingerList* singerList = [[[SingerList alloc]init]autorelease];  
  6.     Settings* settings = [[[Settings alloc]initWithStyle:UITableViewStyleGrouped]autorelease];  
  7. //加入一个数组      
  8.     NSArray* controllerArray = [[NSArray alloc]initWithObjects:musicList,currentPlay,favourite,singerList,settings ,nil];  

配置按钮属性:

 

每个标签栏都有他自己的“标签”,定义了他的标签按钮是什么样子。在视图控制器的 init 方法中,可以配置标签栏按钮,定义视图的标题与/或 tabBarItem 属性:

  1. - (id)initWithStyle:(UITableViewStyle)style{  
  2.     self = [super initWithStyle:style];  
  3.     if (self) {  
  4.     self.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"Settings" image:[UIImage imageNamed:@"Setting"] tag:4];  
  5.     }  
  6.     return self;  
  7. }  

请将 tabBarItem 属性设置为一个 UITabBarItem 对象。你有两种方法可以初始化标签栏中的项目。一种是initWithTitle 可以让你自定义标题和图像等数据来显示按钮。另一种就是创建系统提供的按钮。后者如下:

  1. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil  
  2. {  
  3.     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];  
  4.     if (self) {  
  5.       self.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:2];  
  6.     }  
  7.     return self;  
  8. }  

系统提供的按钮如下:

  1. typedef enum {  
  2.     UITabBarSystemItemMore,  
  3.     UITabBarSystemItemFavorites,  
  4.     UITabBarSystemItemFeatured,  
  5.     UITabBarSystemItemTopRated,  
  6.     UITabBarSystemItemRecents,  
  7.     UITabBarSystemItemContacts,  
  8.     UITabBarSystemItemHistory,  
  9.     UITabBarSystemItemBookmarks,  
  10.     UITabBarSystemItemSearch,  
  11.     UITabBarSystemItemDownloads,  
  12.     UITabBarSystemItemMostRecent,  
  13.     UITabBarSystemItemMostViewed,  
  14. } UITabBarSystemItem;  

显示标签栏控制器:

 

标签栏所需的各个控制器都好了,现在就可以生成我们的标签栏控制器了。忘了讲了,控制器我是在

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  中生成的。

 

  1. //创建UITabBarController控制器    
  2.     UITabBarController* tabBarController = [[UITabBarController alloc]init];  
  3. //设置UITabBarController控制器的viewControllers属性为我们之前生成的数组controllerArray  
  4.     tabBarController.viewControllers = controllerArray;  
  5. //    默认选择第2个视图选项卡(索引从0开始的)  
  6.     tabBarController.selectedIndex = 1;  
  7. //    把tabBarController的view作为子视图添加到window  
  8.     [self.window addSubview:tabBarController.view];  

可定制按钮
默认情况下,当按钮多于5个时,标签栏控制器允许拥护对按钮布局进行定制。要做到这一点,可以单击标有“更多”的标签,然后单击随之出现的导航栏上的编辑按钮。你可以选择只对某些特定的标签进行定制,也可以完全禁止定制。要允许定制,请将标签栏控制器的 customizableViewControllers 设置为一个数组,数组中包含有你希望用户进行定制的试图控制器:

 

导航

当标签栏控制器被显示时,控制器自己处理导航操作,会将选中标签对应视图自动切换到屏幕前端。要读取或者更改当前活动的试图控制器,可以使用 selectedViewController 属性:

  1. tabBarController.selectedViewController = musicList;  
  2.   //读取  
  3.   UIViewController* activeController = tabBarController.selectedViewController;  
  4.   if(activeController == musicList){  
  5.       //  
  6.   }  

也可以使用索引:

  1. tabBarController.selectedIndex = 1;  

委托代理

 

要在标签栏上的视图被选中时得到通知,请赋予标签栏控制器一个委托:

 

  1. tabBarController.delegate = self;  

 委托会在选中一个tab时得到通知,然后 didSelectViewController 的委托方法会被调用:

  1. - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{  
  2.     /*添加代码,处理定制标签栏结束之后的操作*/  
  3. }  

至此结束,最后附上代码工程文件。
UITabBarViewControllerDemo

分享到:
评论

相关推荐

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

    在iOS应用开发中,`UITabBarController` 是一个非常重要的组件,它负责管理多个子控制器,通常这些子控制器会以标签的形式展示在底部的标签栏上。`UITabBarController` 的使用进阶主要包括如何与其他控制器如`...

    IOS 自定义标签栏

    在iOS应用开发中,UI设计往往需要满足多样化的定制需求,而系统提供的默认标签栏(UITabBar)可能无法满足所有场景。此时,开发者需要利用UIKit框架中的组件自定义一个符合特定需求的标签栏。本篇文章将深入探讨如何...

    UI拓展与实践(标签栏控制器).pdf

    UI拓展与实践是iOS开发者入门时的一个重要话题,特别是UI组件中的标签栏控制器UITabBarController。UITabBarController是用于构建iOS应用中底部标签栏的视图控制器,允许用户在不同的视图控制器之间切换,每个视图...

    ios-自定义UITabBarController.zip

    在iOS开发中,`UITabBarController` 是一个非常常见的组件,用于实现底部标签栏导航。在实际项目中,为了满足个性化需求,我们往往需要对它进行定制,使其更符合应用的风格和交互设计。"ios-自定义...

    IOS源码应用Demo-ios tab 标签效果库demo.zip

    2. **UIKit框架**:这是iOS应用开发的核心,其中的`UITabBarController`是实现标签栏的主要类。 3. **自定义TabBar**:源码可能展示了如何扩展或替换默认的TabBar,实现独特的视觉效果或交互。 4. **Storyboard与...

    ios-UITabBarController.zip

    在iOS应用开发中,`UITabBarController` 是一个至关重要的组件,它负责管理多个`UIViewController`实例,并在底部展示一个可触控的标签栏。这个标签栏通常包含多个图标和文字,用户可以通过点击这些标签在不同的视图...

    IOS UITabBarController 使用示例

    在iOS应用开发中,`UITabBarController` 是一个非常重要的组件,它用于创建具有底部标签栏界面的应用。这个组件允许用户在多个视图控制器之间轻松切换,每个标签对应一个不同的功能或内容区域。本篇文章将深入讲解...

    swift-SwipeableTabBarController-UITabBarController标签滑动互动

    Swift中的SwipeableTabBarController是一种实现UITabBarController标签页滑动互动的高级技术,它扩展了标准的苹果UIKit框架,提供了更丰富的用户交互体验。在iOS应用设计中,UITabBarController通常用于管理多个视图...

    swift-一个适用于iOS有趣易用的标签栏导航控制器

    在iOS应用开发中,用户界面是至关重要的组成部分,而标签栏导航控制器(Tab Bar Controller)则是一种常见且实用的界面设计模式,它允许用户通过底部的标签在多个视图之间轻松切换。本项目名为"swift-一个适用于iOS...

    ios-iOS上下拉隐藏与显示导航栏与tabBar.zip

    底部标签栏(UITabBarController)则是用于在多个视图控制器之间切换的组件,通常固定在屏幕底部。对于某些应用场景,如查看全屏图片或播放视频时,隐藏tabBar可以提供更沉浸的体验。隐藏tabBar同样可以通过监听滚动...

    [iOS开发教程-4]Create a UITabBarController from scratch

    在iOS应用开发中,`UITabBarController`是一个非常重要的组件,它允许用户通过底部的标签栏在多个视图控制器之间切换。这篇教程“[iOS开发教程-4]Create a UITabBarController from scratch”将引导你从零开始创建一...

    iOS工程模板标签栏UI框架

    在iOS中,UITabBarController是苹果提供的一个控制器类,用于管理多个UINavigationController或UIViewController实例,这些实例通过底部的标签栏进行切换。每个标签对应一个不同的视图控制器,用户可以通过点击标签...

    ios开发-基于iOS+Swift开发的多Tab框架.zip

    在iOS应用中,多Tab框架通常由UITabBarController类管理,它是一个特殊的UIViewController子类,能够同时展示多个视图控制器,每个视图控制器对应一个Tab标签。用户可以通过底部的Tab栏在不同的功能之间切换。在...

    ios-简易app整体框架自定义底部标签栏.zip

    这个“ios-简易app整体框架自定义底部标签栏.zip”文件提供了一个基础的App框架,特别适合iOS开发的新手学习和使用。 首先,我们来探讨底部标签栏(Tab Bar)。底部标签栏是iOS应用中常见的UI设计元素,它通常位于...

    iOS 自定义UINavigationController和UITabBarController

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

    iOS开发UITabBarController和UICollectionView的使用Demo

    首先,`UITabBarController` 是 iOS SDK 中的一个控制器类,它负责管理一组子控制器,每个子控制器对应一个标签。用户可以通过点击底部的标签来切换不同的视图。创建 `UITabBarController` 的基本步骤包括: 1. ...

    ios-Swift UITabBarController.zip

    在iOS应用开发中,`UITabBarController`是一个非常重要的组件,它是苹果提供的UI控制器,用于实现底部标签栏的切换效果,通常包含多个`UIViewController`的实例,每个实例代表一个标签页。Swift作为苹果官方推荐的...

Global site tag (gtag.js) - Google Analytics