TabBarController创建及使用方法简介

大致讲解一下TabBarController的创建过程:

首先,我们需要一些视图,如创建UIControllerView类型的view1,view2,view3.

然后,我们需要创建 一个UITabBarController类型的实例tabBarView,然后我们将刚刚创建的View1,view2,view3添加到tabBarView中的viewcontroller这个数组中。

我们就完成了一个UITabBarController的创建

注意,一般这个TabBarControler是在appdelegate文件中创建的。因为这个TabBarController是作为我们根视图控制器使用的。

用代码在启动函数中实现一个UITabBarController实例的创建:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
NSArray *colorArray = [[NSArray alloc] initWithObjects:[UIColor redColor], [UIColor blueColor], [UIColor greenColor], [UIColor blackColor], nil]; self.TabBarCV = [[UITabBarController alloc] init];
self.View = [[NSMutableArray alloc] init]; self.TabBarCV.delegate = self;
for (int i = 0; i < [colorArray count]; i++) {
ViewController *view = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
[view.view setBackgroundColor:[colorArray objectAtIndex:i]];
view.title = [NSString stringWithFormat: @"%dst", i];
[self.View addObject:view];
}
self.TabBarCV.viewControllers = self.View;
self.TabBarCV.customizableViewControllers = self.View; self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = self.TabBarCV;
[self.window makeKeyAndVisible];
return YES;
}

效果图如下:

创建函数介绍:

上面创建实例的代码中。使用的是下面方法:

self.TabBarCV.viewControllers = self.View;
self.TabBarCV.customizableViewControllers = self.View;

这个方法可以创建多个view,如果view多于5个,那么左边会出现这个more的按钮,点击more,现实多余无法显示的界面。

下面那个方法就是设置允许我们editor(编辑)的view的,在这个customizableViewControllers的View,都是可以在more这个Navigation中编辑的。

同时,我们还可以使用另一种方法来添加view。如下:

[self.TabBarCV addChildViewController:view];

这个方法和上面的方法一样。但是使用这个方法就只能最多添加5个View。

自定义的设置TabBar中的标签item方法介绍:

我们可以自定义的设置TabBar中的标签item。使用下面的方法:

BarController *controller5 = [[BarController alloc] initWithNibName:nil bundle:nil];
controller5.tabBarItem = [[UITabBarItem alloc] initWithTitle:[self.titleArray objectAtIndex:i] image:[UIImage imageNamed:@"Ellipse 1"] selectedImage:[UIImage imageNamed:@"Ellipse 1"]];

当然我们也可以使用方法单独设置这些属性,如下:

[controller2.tabBarItem setTitle:@"test"];
[controller2.tabBarItem setSelectedImage:[UIImage imageNamed:@"Ellipse 1"]];
[controller2.tabBarItem setImage:[UIImage imageNamed:@"Ellipse 1"]];

效果图如下:

在TabBarController的View之间实现跳转的方法的介绍:

[self.tabBarController setSelectedIndex:2];
[self.tabBarController setSelectedViewController:[self.tabBarController.viewControllers objectAtIndex:2]];

TabBarController协议和协议方法介绍

我们在编写TabBarControlerView的时候,我们可以调用协议里面的一些方法,下面是协议里面的方法的介绍:

首先:我们要调用协议里面的方法,我们需要在响应的类里面遵循UITabBarControllerDelegate协议:

然后,我们要将自己的tabBarController和代理关联起来,self.tabBarController.delegate =self;

协议中主要调用的方法有:

//这个方法在我们选中tabBar的时候调用。
-(BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewControlle //这个方法在点击的时候调用
-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController //下面三个方法在点击more左上角的edited的时候调用
-(void) tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray *)viewControllers
- (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed
-(void) tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed{
//其中,第一个方法在编辑tabBarItem的界面即将弹出的时候调用
//第二个方法在即将结束编辑tabBarItem的时候调用。里面的参数:view controller为tabBar Item 中的View和他们相关的位置;changed显示这个tabBarController中的item的位置有没有改变。
//第三个方法在结束编辑tabBar Item 的时候调用。参数和第二个方法一样。

首先三个方法实现点击下面的这个第三个图片的edit的时候调用的时候调用的。

 
                        

如何将IOS中的tabbar隐藏

一般我们都是在在push一个view的时候,将tabbar给隐藏掉,因此我们需要将添加下面的代码
self.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:vc animated:YES];

然后,我们需要在push的那个view中添加以下代码:

- (void)viewWillAppear:(BOOL)animated {
[xxxTabBar setTabBarHidden:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
[xxxTabBar setTabBarHidden:NO];
}

TabBarController创建及使用方法简介的更多相关文章

  1. 创建控制器的方法、控制器加载view过程、控制器view的生命周期、多控制器组合

    在介绍四大对象的那篇博客中,可以基本了解到程序启动的过程: main-->UIApplicationMain-->创建UIApplication的实例和app代理AppDelegate的实 ...

  2. delphi操作文本文件的方法简介

    delphi操作文本文件的方法简介减小字体 增大字体 作者佚名来源不详发布时间2008-5-31 10:31:16发布人xuedelphi1 文件类型和标准过程       Delphi同Object ...

  3. iOS中常用的四种数据持久化方法简介

    iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...

  4. sleep、yield、join方法简介与用法 sleep与wait区别 多线程中篇(十五)

    Object中的wait.notify.notifyAll,可以用于线程间的通信,核心原理为借助于监视器的入口集与等待集逻辑 通过这三个方法完成线程在指定锁(监视器)上的等待与唤醒,这三个方法是以锁( ...

  5. gawk使用方法简介

    转载:gawk 使用方法简介 - 简书 (jianshu.com) gawk 是最初 Unix 系统上 awk 程序的 GNU 版本.相对于作为流式编辑器的 sed 而言,它提供了更为强大的编程语言特 ...

  6. 网络神器Greasemonkey(油猴子)使用方法简介+脚本分享【转载】

    推荐下,觉得这个方法有用, 今天艾薇百科来介绍一下功能强大的Greasemonkey,俗称"油猴子",Greasemonkey可以自由定制网页,实现你想要的各种功能.堪称" ...

  7. 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间

    [源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...

  8. Redis Cluster搭建方法简介22211111

    Redis Cluster搭建方法简介 (2013-05-29 17:08:57) 转载▼       Redis Cluster即Redis的分布式版本,将是Redis继支持Lua脚本之后的又一重磅 ...

  9. Monte Carlo方法简介(转载)

    Monte Carlo方法简介(转载)       今天向大家介绍一下我现在主要做的这个东东. Monte Carlo方法又称为随机抽样技巧或统计实验方法,属于计算数学的一个分支,它是在上世纪四十年代 ...

随机推荐

  1. 用Raphael在网页中画圆环进度条

    原文 :http://boytnt.blog.51cto.com/966121/1074215 条状的进度条我们见得太多了,实现起来比较简单,它总是长方形的,在方形的区域里摆 放就不太好看了.随着cs ...

  2. 关于DEDECMS自定义模型当中添加自定义字段后在后台添加内容后不显示解决方案

    用DEDECMS的时间也不长,最近在做一个站时,就遇到了这个问题(自定义字段在后台不显示内容)中添加自定义字段后在后台编辑打开后发现我之前添加的内容不显示,如果是只是看看不单击确定的话,那么在前台数据 ...

  3. smtp协议

    一.smtp命令 1.HELO 向服务器标识用户身份 2.MAIL 初始化邮件传输mail from: <xxx> 3.RCPT 标识单个的邮件接收人:常在MAIL命令后面可有多个rcpt ...

  4. Gray码 (格雷码) 【二进制】

    以下内容是看了Matrix67的关于二进制的blog(Link)的一点总结与摘录. Gray码,中文“格雷码”,是一种特殊的编码,相邻两个格雷码的二进制表示中有且仅有一位不同,且 n 阶 Gray 码 ...

  5. [BZOJ 1692] [Usaco2007 Dec] 队列变换 【后缀数组 + 贪心】

    ---恢复内容开始--- 题目链接:BZOJ - 1692 题目分析 首先,有个比较简单的贪心思路:如果当前剩余字符串的两端字母不同,就选取小的字母,这样显然是正确的. 然而若两端字母相同,我们怎么选 ...

  6. MyEclipse右键new菜单项的设置 及 Eclipse中各种文件不能保存中文的问题

    有时候,myeclipse右键new的时候经常出现一些ejb等文件你懂的,很是恶心~~ Window --> Customize Perspective --> Submenus --&g ...

  7. SOC

    http://marsvaadin.iteye.com/blog/1311438 http://blog.csdn.net/cxxsoft/article/details/12610641

  8. 关于判断变量是否为null的顺序问题。

    if("y".equals(other)){ } 其中,other字符串变量可能为Null,可以加一个null判断或者将常量写在前面,变量写在equals后面.如果将变量other ...

  9. Unity 随机数的使用

    脚本语言:C# 一个比较常用的例子是游戏中的主角碰到场景中的NPC时,NPC会随机做出反应,例如有50%几率来友好的致敬,25%几率走开,20%几率反身攻击和%%的几率赠送礼物. 创建一个NPCTes ...

  10. phpMyAdmin import.php 安全漏洞

    漏洞名称: phpMyAdmin import.php 安全漏洞 CNNVD编号: CNNVD-201307-068 发布时间: 2013-07-05 更新时间: 2013-07-05 危害等级:   ...