首先我们需要搭建一个空的项目,当然xcode6.0以后不支持直接创建空项目,所以我们需要在系统生成项目之后,删除xcode自动给你生成的控制器和storyboard,另外需要在Main Interface 处将之前的main删除。如图所示:

然后我们需要在Appdelegate.m文件中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法编辑如下代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
// 在这里创建一个tabbarcontroller
UITabBarController *tabBarController = [[UITabBarController alloc]init];
// 把创建好的tabbar设置成rootviewcontroller
self.window.rootViewController = tabBarController;
// 在tabbar里边添加子控制器
UITableViewController *vc1 = [[UITableViewController alloc]init];
// 设置导航栏的标题
vc1.title = @"消息列表";
UIBarButtonItem *barBtn = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"menu_icon_bulb"] style:UIBarButtonItemStylePlain target:self action:nil];
vc1.navigationItem.rightBarButtonItem = barBtn;
// 将一般控制器 转换为导航控制器
UINavigationController *nav1 = [[UINavigationController alloc]initWithRootViewController:vc1];
// 设置tabbar的item项 的文字
nav1.tabBarItem.title = @"消息";
// 设置item 的图片
nav1.tabBarItem.image = [UIImage imageNamed:@"tab_recent_nor"];
// 设置显示数字
nav1.tabBarItem.badgeValue = @""; UITableViewController *vc2 = [[UITableViewController alloc]init];
//vc2.view.backgroundColor = [UIColor blueColor];
//NSArray *segmentedArray = [[NSArrayalloc]initWithObjects:@"1",@"2",@"3",@"4",nil];
// 首先创建一个数组,内部存上UISegmentedControl按钮的文字
NSArray *segmentTitle = [[NSArray alloc]initWithObjects:@"分组",@"全部", nil];
UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:segmentTitle];
segment.selectedSegmentIndex = ; //设置默认选择项索引
//设置样式
// segment.segmentedControlStyle = UISegmentedControlStylePlain;
//设置在点击后是否恢复原样
// segment.momentary = YES;
// [segment setImage:[UIImage imageNamed:@"btn_jyy.png"] forSegmentAtIndex:3];//设置指定索引的图片
// 具体segmentcontrol的用法请参照: http://www.cnblogs.com/top5/archive/2012/05/17/2506618.html // 将按钮添加到navigationitem的导航栏上去
vc2.navigationItem.titleView = segment;
UIBarButtonItem *barBtn2 = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"header_icon_add"] style:UIBarButtonItemStyleDone target:self action:nil];
vc2.navigationItem.rightBarButtonItem = barBtn2;
UINavigationController *nav2 = [[UINavigationController alloc]initWithRootViewController:vc2];
nav2.tabBarItem.title = @"联系人";
nav2.tabBarItem.image = [UIImage imageNamed:@"tab_buddy_nor"];
tabBarController.viewControllers = @[nav1,nav2]; // 显示在window窗口
[self.window makeKeyAndVisible];
return YES;
}

运行之后的结果是:

用代码生成UINavigationController 与UITabBarController相结合的简单QQ框架(部分)的更多相关文章

  1. iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)   前面我们介绍了StoryBoard这个新技术,和纯技术 ...

  2. iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)   这里我们就直接上实例: 一:新建一个项目singleV ...

  3. iOS开发——实战OC篇&环境搭建之StoryBoard(玩转UINavigationController与UITabBarController)

      环境搭建之StoryBoard(玩转UINavigationController与UITabBarController)   研究了这么就IOS开发,都没有所处一个像样或者自己忙一点的项目.最近自 ...

  4. UIViewController、UINavigationController与UITabBarController的整合使用

    UINavigationController与UITabBarController是iOS开发中最常用的两种视图控制器,它们都属于UIViewController的子类,继承关系如下: @interf ...

  5. UINavigationController与UITabBarController相关问题

    UINavigationController与UITabBarController相关问题 UINavigationController与UITabBarController混用是非常常见的,有时候会 ...

  6. UINavigationController和UITabBarController

    UINavigationController和UITabBarController 目录 概述 UINavigationController UITabBarController 实用功能 待解决 概 ...

  7. .NET 跨平台RPC框架DotNettyRPC Web后台快速开发框架(.NET Core) EasyWcf------无需配置,无需引用,动态绑定,轻松使用 C# .NET 0配置使用Wcf(半成品) C# .NET Socket 简单实用框架 C# .NET 0命令行安装Windows服务程序

    .NET 跨平台RPC框架DotNettyRPC   DotNettyRPC 1.简介 DotNettyRPC是一个基于DotNetty的跨平台RPC框架,支持.NET45以及.NET Standar ...

  8. 搭建一个简单struts2框架的登陆

    第一步:下载struts2对应的jar包,可以到struts官网下载:http://struts.apache.org/download.cgi#struts252 出于学习的目的,可以把整个完整的压 ...

  9. SCSI miniport 驾驶一个简单的框架

    前段时间,只需用一台新电脑,由于资金有限没有匹配了心仪已久的SSD.我没感觉到飞翔的感觉,总不甘心,仔细想想.我死了相当大的存储,我们可以假设部分内存作为硬盘驱动器把它弄出来.不会比固态硬盘的速度快, ...

随机推荐

  1. ACM-ICPC 2018 沈阳赛区网络预赛 J. Ka Chang (分块思想)

    题目链接:https://nanti.jisuanke.com/t/31451 题意: 给你一颗树,树上各点有初始权值,你有两种操作: 1. 给树中深度为l的点全部+x,(根节点为1,深度为0) 2. ...

  2. day5 模拟购物车程序

    #__author__: Administrator #__date__: 2018/7/11 print(''' ======本公司退出以下产品======= 1.bicycle---------- ...

  3. 【 HDU1081 】 To The Max (最大子矩阵和)

    题目链接 Problem - 1081 题意 Given a two-dimensional array of positive and negative integers, a sub-rectan ...

  4. luogu1984 烧水问题 (找规律)

    为了节省能量,我们会希望一个已经烧开了的水温度越低越好 那么可以得到结论,它要依次去碰当前温度从大到小的水 然后再把温度最高的烧开呗 可是直接模拟会T 稍微写一写大概能找到每次烧开花费能量的一个规律 ...

  5. HASH 字符串哈希 映射转化

    哈希HASH的本质思想类似于映射.离散化. 哈希,通过给不同字符赋不同的值.并且钦定一个进制K和模数,从而实现一个字符串到一个模意义下的K进制数上. 它的主要目的是判重,用于$DFS$.$BFS$判重 ...

  6. 【模板】Splay

    Splay 均摊复杂度证明见此处 \(\rightarrow\) 链接 代码如下 #include <bits/stdc++.h> using namespace std; const i ...

  7. __slots__,__doc__,__del__,__call__,__iter__,__next__迭代器协议(三十六)

    1.__slots__是什么:是一个类变量,变量值可以是列表,元祖,或者可迭代对象,也可以是一个字符串(意味着所有实例只有一个数据属性) 2.引子:使用点来访问属性本质就是在访问类或者对象的__dic ...

  8. babel的使用及babel与gulp结合工作流

    Babel 通过语法转换器支持最新版本的 JavaScript . 它有非常多的插件,这些插件能够允许我们立刻使用新语法,无需等待浏览器支持. 那我们怎么使用babel呢? 首先我们来了解babel基 ...

  9. Mysq中的流程控制语句的用法

    这篇博客主要是总结一下Mysq中的流程控制语句的用法,主要是:CASE,IF,IFNULL,NULLIF 1.case CASE value WHEN [compare-value] THEN res ...

  10. (next_permutation) 排列2 hdu 1716

    排列2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...