1、简单实现

效果:在视图底部显示一个工具栏

代码实现

// 创建窗口

self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

// 指定跟控制器

UITabBarController *tabBar = [[UITabBarController alloc] init];

self.window.rootViewController = tabBar;

UIViewController *vc1 = [[UIViewControlleralloc] init];

[tabBar addChildViewController:vc1];

vc1.view.backgroundColor = [UIColorredColor];

vc1.tabBarItem.title  = @"聊天";

vc1.tabBarItem.image = [UIImage imageNamed:@“tab_recent_nor"];

UIViewController *vc2 = [[UIViewControlleralloc] init];

[tabBar addChildViewController:vc2];

vc2.view.backgroundColor = [UIColorgreenColor];

vc2.tabBarItem.title  = @"空间";

vc2.tabBarItem.image = [UIImage imageNamed:@“tab_qworld_nor"];

UIViewController *vc3 = [[UIViewControlleralloc] init];

[tabBar addChildViewController:vc3];

vc3.view.backgroundColor = [UIColorgreenColor];

vc3.tabBarItem.title  = @"联系人";

vc3.tabBarItem.image = [UIImage imageNamed:@“tab_buddy_nor"];

UIViewController *vc4 = [[UIViewControlleralloc] init];

[tabBar addChildViewController:vc4];

vc4.view.backgroundColor = [UIColorgreenColor];

vc4.tabBarItem.title  = @"设置";

vc4.tabBarItem.image = [UIImage imageNamed:@“tab_me_nor"];

vc4.tabBarItem.badgeValue = @“10”; // 右上角显示数字

// 显示窗口

[self.windowmakeKeyAndVisible];

综合使用

UITabBarController的使用

一般是一个UITabBarController控制多个NavigationController,这样可以保证每一个控制器下都有一个单独的顶部导航栏,而不是整个应用只有一个导航栏。

比如下面这个界面,一个UITabBarController控制多个NavigationController,然后有NavigationController控制界面内部的跳转。

 

类似效果如下:

主界面有三个TableView组成,通过tabBarController进行控制。

在聊天界面选中cell后跳转到下一个控制器

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

UIStoryboard *story = [UIStoryboardstoryboardWithName:@"Main"bundle:nil] ;

SLQChatViewController *chat = [story instantiateViewControllerWithIdentifier:@"chat"];

// 选中cell后跳转到chat界面

[self.navigationControllerpushViewController:chat animated:YES];

}

          

在设置界面的关于条目通过拖线建立与关于控制器的跳转。

注意情况

主要是各种cell的自定义方法。因为很多界面都是自定义的cell组成的。

还有就是从storyboard中加载控制器进行界面的跳转

UIStoryboard *story = [UIStoryboard storyboardWithName:@“Main"bundle:nil] ;

SLQChatViewController *chat = [story instantiateViewControllerWithIdentifier:@"chat"];

// 选中cell后跳转到chat界面

[self.navigationController pushViewController:chat animated:YES];

隐藏底部导航条可以设置控制的属性

IOS笔记049-UITabBarController的更多相关文章

  1. iOS 怎么设置 UITabBarController 的第n个item为第一响应者?

    iOS 怎么设置 UITabBarController 的第n个item为第一响应者? UITabBarController 里面有个属性:selectedIndex @property(nonato ...

  2. IOS开发之UITabBarController与UINavigationController混合使用

    ios开发中UITabBarController与UINavigationController混合使用是很多app的基础页面结构,下面是简单的的页面初始化的方法,在AppDelegate.m的 - ( ...

  3. iOS开发之UITabBarController和UICollectionView的使用

    这一篇要记录的是iOS开发中UITabBarController控件和UICollectionView控件的使用.APP跑起来之后的效果例如以下图: watermark/2/text/aHR0cDov ...

  4. 荼菜的iOS笔记--UIView的几个Block动画

    前言:我的第一篇文章荼菜的iOS笔记–Core Animation 核心动画算是比较详细讲了核心动画的用法,但是如你上篇看到的,有时我们只是想实现一些很小的动画,这时再用coreAnimation就会 ...

  5. 【IOS笔记】View Controller Basics

    View Controller Basics   视图控制器基础 Apps running on iOS–based devices have a limited amount of screen s ...

  6. IOS笔记 1

    < ![CDATA[ 笔记 UIWindows 与UIView的关系iOS的坐标系统视图层次结构视图坐标(Frame和Bounds区别)UIView的常用属性和方法坐标系统的变换UIView内容 ...

  7. UITabBarController 笔记(三) UITabBarController 配合 UINavigationController 的使用

    建个空的iOS工程 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictiona ...

  8. 【转】iOS笔记-自定义控件(OC)

    原文网址:http://www.jianshu.com/p/f23862eb7b8a 导读: iOS开发中,很多时候系统提供的控件并不能很好的满足我们的需求,因此,自定义控件便成为搭建UI界面中必不可 ...

  9. iOS笔记———数据存储

    应用沙盒:应用文件系统的根目录,每个应用都有独自的沙盒相互:在xcode中可以用NSHomeDirectory()函数,打印当前应用的沙盒根路径. 应用程序包:包含了所有资源文件和执行文件; * Do ...

  10. Xamarin开发IOS笔记:切换输入法时输入框被遮住

    在进行IOS开发的过程中,出现类似微信朋友圈的交互界面,当用户遇到感兴趣的内容可以进行评论.为了方便评论输入,当出现评论输入框的时候自动将评论输入框移动至键盘的上方,这样方便边输入边查看. 当用户隐藏 ...

随机推荐

  1. <logger>和<root>

    <logger>用来设置某一个包或者具体一个类的日志打印级别.以及制定<appender>.<logger>可以包含零个或者多个<appender-ref&g ...

  2. WPF样式学习:ToolBar的使用

    隐藏拖动把手: 设置ToolBar属性 ToolBarTray.IsLocked="True",可以达到隐藏拖动把手的目的 private void ToolBar_Loaded( ...

  3. 域名与IP地址的联系与区别

    我们也知道每一台机都有一个唯一ip地址, 特别难记,所以出现了今天的DNS(域名) 当我们的计算机想要和一个远程机器连接时,我们可以申请连接该机器ip地址下的DNS,例如:www.baidu.com. ...

  4. zip、rar压缩文件密码破解——使用ARCHPR Professional Edition

    直链下载地址: https://pan.abn.cc/weiyun/down.php?u=82441366e3c1f43fc69210e8ece93470.undefined.zip (压缩包内含解压 ...

  5. 创建1M-1T的虚拟磁盘(内存盘)——使用破解版 Primo Ramdisk Server Edition v5.6.0

    破解版 Primo Ramdisk Server Edition v5.6.0下载: https://pan.lanzou.com/i0sgcne 步骤: 下载并解压后安装“Primo.Ramdisk ...

  6. JS.match方法 正则表达式

    match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配. 该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置. <sc ...

  7. [Rails学习之路]Rails路由配置

    如果是使用Rails的默认约定,那么几乎是零配置. 但有些时候,我们可能不得不(或者更喜欢)进行一些特殊的配置. 其实Rails在路由功能中也有很丰富的配置选项. routes.rb文件中靠前的规则优 ...

  8. 为项目创建podfile

    由于写项目 不常用到,容易忘记,记录一下 第一步:新建一个项目: 第二步:打开终端,输入 cd 第三步:把项目拖入终端,(获取项目路径) 第四步:回车,输入 pod init (生成podfile 文 ...

  9. 2017.12.10 Java写一个杨辉三角(二维数组的应用)

    杨辉三角的定律 第n行m列元素通项公式为: C(n-1,m-1)=(n-1)!/[(m-1)!(n-m)!] 需要用到创建二维数组 package com.glut.demo; /** * 杨辉三角 ...

  10. Luogu [P1958] 上学路线_NOI导刊2009普及(6)

    上学路线_NOI导刊2009普及(6) 题目详见:上学路线_NOI导刊2009普及(6) 这是一道基础的DFS(深搜)题,堪称模板,是新手练习搜索与回溯的好题选. 大致思路:从(1,1)开始搜索,每次 ...