iOS:删除storyBoard,纯代码实现UITabBarController的视图切换功能

简介:

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

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

步骤:

1、删除storyboard故事板和UIViewController

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

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

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

 

文件截图如下:

演示结果如下:

       

 

代码如下:

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

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

在SecondViewController类中只设置视图颜色

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

在ThreeViewController类中只设置视图颜色

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

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

复制代码
 1 #import "AppDelegate.h"
 2 #import "FirstViewController.h"
 3 #import "SecondViewController.h"
 4 #import "ThreeViewController.h"
 5 
 6 @interface AppDelegate ()
 7 
 8 @end
 9 
10 @implementation AppDelegate
11 
12 
13 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
14     // 创建window并设置大小
15     self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
16     
17     //创建UITabBarController
18     UITabBarController *tabBarController = [[UITabBarController alloc]init];
19     
20     //创建三个控制器,并且加入tabBarController中
21     FirstViewController *firstVC = [[FirstViewController alloc]init];
22     //设置标签栏标题
23     firstVC.tabBarItem.title = @"first";
24     //设置系统自带的图标
25     firstVC.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:0];
26     //设置badgeValue
27     firstVC.tabBarItem.badgeValue = @"10";
28     
29     SecondViewController *secondVC = [[SecondViewController alloc]init];
30     secondVC.tabBarItem.title = @"second";
31     //设置系统自带的图标
32     secondVC.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemDownloads tag:1];
33     //设置badgeValue
34     secondVC.tabBarItem.badgeValue = @"5";
35     
36     
37     ThreeViewController *threeVc = [[ThreeViewController alloc]init];
38     threeVc.tabBarItem.title = @"three";
39     //设置系统自带的图标
40     threeVc.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemBookmarks tag:2];
41     
42     //[tabBarController addChildViewController:firstVC];
43     //[tabBarController addChildViewController:secondVC];
44     //[tabBarController addChildViewController:threeVC];
45     tabBarController.viewControllers = @[firstVC,secondVC,threeVc];
46     
47     //将tabBarcontroller设置为根控制器
48     self.window.rootViewController = tabBarController;
49     
50     //window接受用户响应并显示
51     [self.window makeKeyAndVisible];
52     
53     return YES;
54 }
复制代码

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!


本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4811401.html,如需转载请自行联系原作者
目录
打赏
0
0
0
0
50
分享
相关文章
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
141 1
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
130 0
提升iOS应用安全性:全面代码混淆功能介绍,使用Ipa Guard保护你的应用
iOS加固保护是直接针对ios ipa二进制文件的保护技术,可以对iOS APP中的可执行文件进行深度混淆、加密。使用任何工具都无法逆向、破解还原源文件。对APP进行完整性保护,防止应用程序中的代码及资源文件被恶意篡改。Ipa Guard通过修改 ipa 文件中的 macho 文件中二进制数据(代码模块配置)进行操作,无需源码。不限定开发技术平台。支持oc,swift,cocos2d-x、unity3d、quick-cocos,html5 ,react native等等各种开发技术。Ipa Guard主要包含代码混淆全面、资源文件处理、不需要源代码更安全、调试信息清理、即时测试运行。
深入解析iOS 14隐私保护功能:用户数据安全的新里程碑
随着数字时代的到来,个人隐私保护成为全球关注的焦点。苹果公司在最新的iOS 14系统中引入了一系列创新的隐私保护功能,旨在为用户提供更透明的数据使用信息和更强的控制权。本文将深入探讨iOS 14中的几项关键隐私功能,包括App跟踪透明性、简化的隐私设置以及增强的系统安全性,分析它们如何共同作用以提升用户的隐私保护水平。
196 3
深入探索iOS 14的隐私保护功能
本文将深入探讨iOS 14操作系统中的隐私保护功能,包括新的隐私指示器、应用程序跟踪透明度以及增强的隐私设置。我们将分析这些功能如何提高用户对个人数据的控制权,并讨论它们对应用开发者和广告行业的影响。
78 1
Android vs iOS:探索移动操作系统的设计与功能差异###
【10月更文挑战第20天】 本文深入分析了Android和iOS两个主流移动操作系统在设计哲学、用户体验、技术架构等方面的显著差异。通过对比,揭示了这两种系统各自的独特优势与局限性,并探讨了它们如何塑造了我们的数字生活方式。无论你是开发者还是普通用户,理解这些差异都有助于更好地选择和使用你的移动设备。 ###
92 3
苹果发布iOS 18 Beta 4,新增CarPlay 壁纸等多项功能改进
本文首发于公众号“AntDream”,探索iOS 18 Beta 4新功能与改进: CarPlay壁纸、iCloud设置访问优化、相机控制记忆、隐藏文件夹设计变更、深色/浅色模式图标同步、股票应用图标调整、iPhone镜像功能增强、控制中心蓝牙切换键、AssistiveTouch新增Type to Siri等,以及Apple Intelligence暗示。开发者可通过苹果计划提前体验。
132 12
ios和安卓测试包发布网站http://fir.im的注册与常用功能
ios和安卓测试包发布网站http://fir.im的注册与常用功能
420 0
ios和安卓测试包发布网站http://fir.im的注册与常用功能
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
253 0
|
9月前
|
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
156 0

热门文章

最新文章

  • 1
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    47
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    19
  • 3
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    59
  • 4
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    32
  • 5
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    13
  • 6
    iOS各个证书生成细节
    16
  • 7
    iOS7应用开发7:自定义视图、手势操作
    1
  • 8
    IOS小工具以及精彩的博客
    507
  • 9
    iOS - Swift NSPoint 位置
    1
  • 10
    iOS开发-UIScrollView原理
    655
  • 1
    iOS各个证书生成细节
    16
  • 2
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    59
  • 3
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    32
  • 4
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    47
  • 5
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    40
  • 6
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    32
  • 7
    uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
    147
  • 8
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
    279
  • 9
    app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
    99
  • 10
    深入探索iOS开发中的SwiftUI框架
    149
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等