storyboard是一个很强大的编写代码的辅助工具,可以帮助布局多个视图之间的联系,既直观又能减少代码量;但是,作为一个程序员,在不使用storyboard的情况下,纯代码编写是必须的技能。

下面就用纯代码实现纯代码实现UITabBarController的视图切换功能,咱就实现三个视图之间的转换吧,代码不多,容易看的明白。

步骤:

1、删除storyboard故事板和UIViewController

2、创建三个控制器类,均继承自UIViewController,分别为FirstViewController、SecondViewController、ThreeViewController

3、为了便于区分跳转的视图,分别在上面的三个控制器类中设置它们各自视图的颜色。

4、在AppDelegate应用程序代理类中进行这三个控制器的创建、UITabBarController的创建、window的创建。最后进行代码的整合即可。

文件截图如下:

演示结果如下:

       

代码如下:

在FirstViewController类中只设置视图颜色:

 - (void)viewDidLoad {
[super viewDidLoad];
// 设置视图颜色
self.view.backgroundColor = [UIColor redColor];
}

在SecondViewController类中只设置视图颜色

 - (void)viewDidLoad {
[super viewDidLoad];
// 设置视图颜色
self.view.backgroundColor = [UIColor greenColor];
}

在ThreeViewController类中只设置视图颜色

 - (void)viewDidLoad {
[super viewDidLoad];
// 设置视图颜色
self.view.backgroundColor = [UIColor purpleColor];
}

在AppDelegate应用程序代理类中,代码才是重点,如下:

 #import "AppDelegate.h"
#import "FirstViewController.h"
#import "SecondViewController.h"
#import "ThreeViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 创建window并设置大小
self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]]; //创建UITabBarController
UITabBarController *tabBarController = [[UITabBarController alloc]init]; //创建三个控制器,并且加入tabBarController中
FirstViewController *firstVC = [[FirstViewController alloc]init];
//设置标签栏标题
firstVC.tabBarItem.title = @"first";
//设置系统自带的图标
firstVC.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:];
//设置badgeValue
firstVC.tabBarItem.badgeValue = @""; SecondViewController *secondVC = [[SecondViewController alloc]init];
secondVC.tabBarItem.title = @"second";
//设置系统自带的图标
secondVC.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemDownloads tag:];
//设置badgeValue
secondVC.tabBarItem.badgeValue = @""; ThreeViewController *threeVc = [[ThreeViewController alloc]init];
threeVc.tabBarItem.title = @"three";
//设置系统自带的图标
threeVc.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemBookmarks tag:]; //[tabBarController addChildViewController:firstVC];
//[tabBarController addChildViewController:secondVC];
//[tabBarController addChildViewController:threeVC];
tabBarController.viewControllers = @[firstVC,secondVC,threeVc]; //将tabBarcontroller设置为根控制器
self.window.rootViewController = tabBarController; //window接受用户响应并显示
[self.window makeKeyAndVisible]; return YES;
}

iOS:删除storyBoard,纯代码实现UITabBarController的视图切换功能的更多相关文章

  1. 【好程序员笔记分享】——iOS开发之纯代码键盘退出

    -iOS培训,iOS学习-------型技术博客.期待与您交流!------------ iOS开发之纯代码键盘退出(非常简单)     iOS开发之纯代码键盘退出 前面说到了好几次关于键盘退出的,但 ...

  2. iOS UITableViewCell UITableVIewController 纯代码开发

    iOS UITableViewCell UITableVIewController 纯代码开发 <原创> .纯代码 自定义UITableViewCell 直接上代码 ////// #imp ...

  3. iOS开发学习--纯代码 UIScrollView 无限循环的实现——代码类封装

    一个简单的利用UIScrollView 实现的无线滚动banner,下面的代码实现,因为封装问题,对两个及一下的view 支持出了一点问题(view是传参进来的,不可以生成两份),但是原理是正确的,智 ...

  4. IOS开发之纯代码界面--基本控件使用篇 ┊

    http://www.cocoachina.com/bbs/read.php?tid=131516

  5. Masonry -- 使用纯代码进行iOS应用的autolayout自适应布局

    简介 简化iOS应用使用纯代码机型自适应布局的工作,使用一种简洁高效的语法替代NSLayoutConstraints. 项目主页: Masonry 最新示例: 点击下载 项目简议: 如果再看到关于纯代 ...

  6. Masonry — 使用纯代码进行iOS应用的autolayout自适应布局

    本文转载至   http://www.ios122.com/2015/09/masonry/ 简化iOS应用使用纯代码机型自适应布局的工作,使用一种简洁高效的语法替代NSLayoutConstrain ...

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

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

  8. iOS高仿app源码:纯代码打造高仿优质《内涵段子》

    iOS高仿app源码:纯代码打造高仿优质<内涵段子>收藏下来 字数1950 阅读4999 评论173 喜欢133 Github 地址 https://github.com/Charlesy ...

  9. 【iOS开发】多屏尺的自动适配 AutoLayout (纯代码方式)

    关于AutoLayout,最早从iOS6开始引入使用.   主要功能是使用约束,对视图进行相对布局,以适应不同屏尺的变换.   网上大量的资料都在介绍xib和storyboard,如何使用AutoLa ...

随机推荐

  1. elementUI 学习入门之 container 布局容器

    Container 布局容器 用于布局的容器组件,方便快速搭建页面基本结构 <el-container> : 外层容器.当子元素包含 <el-header> 或 <el- ...

  2. Java 深入浅出String

    String String是一个被final修饰的类,直接继承于Object,同时也实现了charsequence接口,String被声明为final也就不可以被继承了.由于String的方法比较多, ...

  3. Python之路【第二篇】: 列表、元组、字符串、字典、集合

    本文内容: -------------------------------------- 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表(list) 序列是Pyt ...

  4. Spring boot的hot swapping

    前言 嘛,都是看官方文档的,就先贴上文档地址: using-boot-hot-swapping 使用 使用hot swapping只需要把devtools的jar包添加到你的classpath里. 在 ...

  5. java console 到文件

    System.setOut(new PrintStream(new FileOutputStream("c:\\temp\\test1.txt"))); System.out.pr ...

  6. HNOI2017滚粗记

    DAY0: 高三学长说了考前要么就完全颓废要么就完全学,所以我们就完全开启了颓废模式.上午教练带队去烈士公园游玩,中途机房歌神和QYS一直在谈论如何用LCT动态维护树的直径,ORZORZORZ.... ...

  7. 【9.7校内测试】【二分+spfa】【最长上升子序列】【状压DP+贪心(?)】

    刘汝佳蓝书上的题,标程做法是从终点倒着$spfa$,我是二分答案正着$spfa$判断可不可行.效果是一样的. [注意]多组数据建边一定要清零啊QAQ!!! #include<iostream&g ...

  8. Codeforces Round #302 (Div. 2) D - Destroying Roads 图论,最短路

    D - Destroying Roads Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/544 ...

  9. git用法资料

    上网看到一篇不错的GIT教程,与大家共享(图片上传实在太麻烦),请见具体地址: http://www.liaoxuefeng.com/wiki/0013739516305929606dd1836124 ...

  10. CC1150 针对低功耗无线应用设计的高度集成多通道射频发送器

    Low Power Sub-1 GHz RF Transmitter 单片低成本低能耗 RF 发送芯片 应用 极低功率 UHF 无线发送器 315/433/868 和 915MHz ISM/SRD 波 ...