首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iOS didFinishLaunchingWithOptions方法里获取storyBoard的rootViewController

iOS didFinishLaunchingWithOptions方法里获取storyBoard的rootViewController

作者头像
星宇大前端
发布于 2019-01-15 03:00:06
发布于 2019-01-15 03:00:06
1.4K0
举报
文章被收录于专栏:大宇笔记大宇笔记

今天遇到个问题,想在didFinishLaunchingWithOptions方法里获取storyBoard的rootViewController。然后监听TabbarViewControllerde 点击事件(我的项目是storyBoard --> TabbarViewController形式)

问题一: didFinishLaunchingWithOptions 和 storyBoard 创建的方法,是怎么一个顺序呢。

程序启动过程如下:

  1. mian文件主函数创建UIApplication
  2. UIApplication 对象扫描 Info.plist 文件,将其中 Mainstoryboard file base name 所指定的 Storyboard 文件进行装载
  3. UIApplication 获取窗口并关联
  4. Storyboard 初始化 ,并指定root view controller
  5. 最后执行didFinishLaunchingWithOptions

由此发现didFinishLaunchingWithOptions之前已经Storyboard已经准备好了,UIApplication的rootViewController也准备好了。

跟踪一下找到了rootViewController ,获取如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Override point for customization after application launch.

UITabBarController  *  tabBar  =  (UITabBarController *)application.delegate.window.rootViewController;

    tabBar.delegate  = self;

return YES;

}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年12月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
程序启动的完整过程
程序启动的完整过程 int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([MJAppDelegate class])); } } 执行顺序 1.main函数 2.UIApplicationMain 创建UIApplication对象 创建UIApplication的delegate对象
用户1941540
2018/05/11
1.6K0
iOS 新创建项目中的SceneDelegate适配
Xcode 11之后新建工程,默认为有SceneDelegate,但是SceneDelegate是从iOS 13之后才有的,如果最低兼容版本到iOS 13以下,需要怎么做呢?
莫空9081
2021/04/21
3.7K0
iOS四大对象之AppDelegate及UIApplicationMain函数/程序启动过程1. AppDelegate应用程序代理2. UIApplicationMain函数/程序启动过程
1. AppDelegate应用程序代理 手机上的App有一个致命的缺点:很容易受到打扰。比如一个来电或者锁屏会导致app进入后台甚至被终止。 还有很多其它类似的情况会导致app受到干扰,在app受到干扰时,会产生一些系统事件,这时UIApplication会通知它的delegate对象,让delegate代理来处理这些系统事件。作用:当被打断的时候,通知代理进入到后台。 默认创建出来,有七个方法,解读如下: // 程序第一次加载完毕,就会调用此方法 - (BOOL)application:(UIAppl
stanbai
2018/06/28
1.3K0
iOS-UIWindow详解
1.UIWindow简介 UIWindow是一种特殊的UIView,通常在一个app中至少会有一个UIWindow。 iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的View,最后将控制器的View添加到UIWindow上,于是控制器的View就显示在屏幕上了。 一个iOS程序之所以能显示在屏幕上,完全是因为它有UIWindow,也就是说,没有UIWindow就看不到任何UI界面。 状态栏和键盘都是特殊的UIWindow。 那么UIWindow是如何将View显示到屏幕上的呢
xx_Cc
2018/05/10
2.1K0
基础篇-UIApplication、UIWindow以及程序的启动流程看我就够了
这篇文章主要介绍下有关UIApplication、UIWindow以及程序的启动流程,通过这篇文章,相信你会更加理解iOS 的应用启动过程以及app应用级别的相关知识。
進无尽
2018/09/12
1.8K0
基础篇-UIApplication、UIWindow以及程序的启动流程看我就够了
从0开发一款IOS APP(第一天)
实例化的时候使用TestView:TestView *view2 = [[TestView alloc] init];
zx钟
2019/07/19
1.3K0
Xcode11 删除Storyboard 之后黑屏
今天新写一个项目,不需要Storyboard,本以为很简单,删除之后黑屏踩了一个坑,在此记录一下。这个解决办法不一定是正确,但是这么做确实可行。
赵哥窟
2020/07/10
1.7K0
Xcode11 删除Storyboard 之后黑屏
Xcode12 删除Scene
1、Deployment Info Main Interface 清空 截屏2021-08-30 09.26.16.png 2、AppDelegate 删除如下代码 #pragma mark - UISceneSession lifecycle - (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)conne
赵哥窟
2021/12/16
9330
Xcode12 删除Scene
UITabBarController实现Tab切换
在很多的应用中,基本都是使用Tab方式进行模块间的切换。在Android中很多控件可以实现这类效果,TabLayout、TabHost… 而在iOS中系统为我们提供了UITabBarController类来实现Tab页面之间的切换。有几个页面我们就创建几个UINavigationController,然后通过tabbar.viewControllers = @[navi1, navi2, navi3…]; 设置给UITabBarController。在进行Tab切换的设计思想上Android和iOS是
xiangzhihong
2018/02/06
2.2K0
UITabBarController实现Tab切换
iOS微信支付简单的使用
APP微信商户申请APPID步骤地址 微信支付 SDK与 Demo地址下载 微信SDK与 Demo 把微信支付 SDK 拖到工程上 SDK 添加微信支付依赖库
LeeCen
2018/10/11
1K0
iOS微信支付简单的使用
iOS13 Scene Delegate
iOS13以后,SceneDelegate将负责AppDelegate的某些功能。 window(窗口)的概念被window(场景)的概念所代替, 一个scene现在可以作为您应用程序的用户界面和内容的载体。iOS13以前一个应用程序可以有不止一个window,同样现在一个应用程序也可以有不止一个scene。
conanma
2021/11/04
6.3K0
iOS四大对象之UIWindow及四大对象之间的关系1. UIWindow/使用纯代码加载根控制器2. UIWindow的创建过程3. 四大对象之间的关系
1. UIWindow/使用纯代码加载根控制器 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow -iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了 创建的第一个对象是:UIApplication 一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow 。也就说,没有UIWindow,就看不见任何UI界面 1.1 手工创建一个
stanbai
2018/06/28
1.8K0
【IOS开发基础系列】Storyboard专题
        如果你的 app 有大量的窗口,故事板能帮你减少许多用于从一个窗口转到另一个窗口的导航代码。与每个viewcontroller一个单独的 nib 文件不同,你的 app 只需用一个故事板文件(其中可以包含所有的viewcontroller 以及它们之间的关系)即可。
江中散人_Jun
2023/10/16
2.3K0
【IOS开发基础系列】Storyboard专题
iOS开发系列——纯代码实现iOS开发
storyboard进行界面设计固然不错,特别是对于初学者经常会使用设计器进行界面设计,但是实际开发过程中我们很多情况下会直接使用代码进行界面布局,特别是对于复杂的界面布局更是如此。下面我们就从一个空项目建立一个类似于前面的登录界面。
Kris大鲨
2018/05/05
3.8K5
iOS开发系列——纯代码实现iOS开发
IOS开发系列——UIView专题之一:UIWindow篇
UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow。
江中散人_Jun
2023/10/11
1.1K0
IOS开发系列——UIView专题之一:UIWindow篇
探索IOS App的生命周期之启动篇
因为刚刚涉入IOS APP开发,对IOS应用的使用的生命周期不是很熟,所以写下此日志,以防时间一长又忘记了。
江中散人_Jun
2022/03/08
7450
iOS TabBar 轮子
今天在GitHub上找了一个TabBar的轮子,Star 6.5k还不错,日常开发已经够用了,设置图片,选中图片,文本颜色,选中文本颜色,数字角标,选中动画,中间凸起按钮都有,日常开发已经够用了。具体可以去GitHub上看文档。 CYLTabBarController 自己写的Demo
赵哥窟
2021/12/16
1.2K0
iOS TabBar 轮子
iOS 项目集成Flutter
最近移动端火爆无非是Flutter--舍我其谁,而官网的引导之中鲜有说怎么在已有项目中去集成Flutter,今天我们就再蹭个热门来进行一个iOS集成
大话swift
2019/07/03
1.5K0
iOS 项目集成Flutter
「GPUImage」IOS初学者容易掉入的坑
今天想弄个GPUImage的例子运行下看看效果,结果没成想坑进了一系列坑中,花了大半天时间才从坑里爬出来。
音视频_李超
2020/04/02
1.2K1
「GPUImage」IOS初学者容易掉入的坑
Swift -标签页控制器(UITabBarController)用法
Simulator Screen Shot 2016年11月8日 19.11.36.png
Python疯子
2018/09/06
3.2K1
Swift -标签页控制器(UITabBarController)用法
相关推荐
程序启动的完整过程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档