Xcode11 后Appdelegate自定义UIWindow对象失败详解。

在Xcode11前我们可以在AppDelegate的钩子didFinishLaunchingWithOptions进行自定义UIWindow对象。但是Xcode11后自定义UIWindow会报错无法启动APP。
是因为iOS13中AppDelegate的职责发生了改变: iOS13之前,AppDelegate全权处理App生命周期和UI生命周期;
iOS13之后,AppDelegate的职责是: 1、处理 App 生命周期 2、新的 Scene Session 生命周期 那UI的生命周期交给新增的Scene Delegate处理, AppDelegate不在负责UI生命周期,所有UI生命周期交给SceneDelegate处理。所以我们需要在SceneDelegate的scene钩子进行自定义UIWindow初始化。

1.首先我们不仅要删除info.plist中的Main storyboard file base name还需要删除Application Scene Manifest下的Storyboard Name。具体看图
在这里插入图片描述
2.然后在 SceneDelegate 中进行初始化UIWindow.

// SceneDelegate.m- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).self.window = [[UIWindow alloc] initWithWindowScene:(UIWindowScene* )scene];self.window.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);// 初始化跟视图UIViewController* ROOTVC = [[ViewController alloc] init];// 初始化层级导航控制UINavigationController* ROOTNavigation = [[UINavigationController alloc]initWithRootViewController:ROOTVC];self.window.rootViewController = ROOTNavigation;// 显示[self.window makeKeyAndVisible];
}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IOS中的事件响应链,事件冒泡机制基本了解

本文主要讲解IOS中事件响应链,即事件冒泡机制。做过web开发的同学应该知道js事件冒泡是从主响应元素一层一层的向父级冒泡事件,在ios亦是如此,但是不同是ios中,如果冒泡链中有一方对事件进行响应处理后会截止后续对冒泡行为不同于…

板子制作_工厂制作风管VS现场制作有什么区别?

一、传统风管与酚醛风管对比中央空调传统送风管道通常内层采用铁皮或玻璃钢,外裹保温材料,最外面用铝箔进行缠绕,这使得送风管重而大、施工安装费工费时、外观差、气密性低、能耗大。传统的风管已不能满足快速增长的市场需求及人们对室内环境…

关于 NODE.js 并行线程 worker_threads 的使用与详解。

javascript 是单线程,那么node.js属于服务端语言改如何实现其他语言中的并发线程执行呢?在node V10只有 child_process,cluster的API来开启多子进程,多进程。进程并不是子线程,无法内存共享。在nodeV10后引入worker_th…

IOS 多层级路由导航控制器 NavigationControoller 实现路由切换

IOS 导航控制器分为多层级导航控制器naviagtionController 和平行分栏控制器 UITabBar(底部切换栏)。IOS导航控制器是什么呢?其实就是我们web的路由切换功能,只不过在app开发切换是ViewController。 什么是导航控制器 NavigationC…

前端性能优化篇——浏览器同域名并发请求对限制

在浏览器同域名并发请求都产生并发数限制,并发限制通常是4~8以内,那么来了解浏览器请求并发限制的原因和优化手段。浏览器并发数量统计 浏览器为什么要请求并发数限制?在了解优化手段之前我们先了解浏览器限制并发请求的原因1.对操…

帧大小超过交换机mtu_交换机的三种交换方式

交换机是一种用于电(光)信号转发的网络设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路。交换机拥有一条高带宽的背部总线和内部交换矩阵,在同一时刻可进行多个端口对之间的数据传输,交换机的传输模式…

前端性能优化篇——浏览器http同域名并发请求对限制

在浏览器同域名并发请求都产生并发数限制,并发限制通常是4~8以内。那么我们将来了解浏览器请求并发限制的原因和优化手段。 浏览器并发数量统计 浏览器为什么要请求并发数限制? 在了解优化手段之前我们先了解浏览器限制并发请求的原因 1.对操…

rstudio的数据集怎么建立和保存_这个40M的小工具助你在windows下处理数据如虎添翼...

使用windows系统时,如何获取一个大小为1M的文件的行数呢?一般是选择用excel或notepad等软件打开文件,然后查看最后一行的行号,那如果是想快速获取一个大小为1G的文件的行数呢?或是想快速获取100个大小为1M的文件的行数…

mongo 唯一约束索引_Java:MySQL 基础知识+索引相关

阅读本文前,请您先点击上面的蓝色字体,再点击“关注”,这样您就可以继续免费收到最新文章了。每天都有分享。完全是免费订阅,请放心关注。注:本文转载自网络,不代表本平台立场,仅供读者参考&…

Javascript性能优化【内联缓存】 V8引擎特性

javascript 是单线程、动态类型语言,那么我们在编码时候如何编写性能最优代码呢?下面将讲解V8引擎的内联优化。利用内联缓存这个特性我们可以编写更加优秀的代码。 什么是内联缓存 引用官方的描述:内联缓存(Inline caching&#…

bootstrap 垂直居中 布局_CSS3 flex 布局必须要掌握的知识点

flex 布局已经流行好久了,从最开始大家都在用非官方标准的 box 布局(display: box; display: -webkit-box;),到后来的各种兼容写法,再到后来基本上就是只用 flex 了。毕竟标准就是标准,虽然有时候会迟到,但是最终肯定还…

如何在代码中让按钮高亮_各种博客的代码高亮是如何实现的

本文来自 「Vue虚拟实验」的小伙伴 余xiaoy,在做 Lovue 项目的时候,他负责了代码高亮显示功能,目前实现了代码高亮、主题切换、某行代码特殊显示、显示行号等功能,效果如下。下面介绍如何通过 Vue 来完成这个功能:Vue…

如何把表格做成源代码_他来了,他来了,文字、表格、公式图片识别神器V0.1测试版...

他来了,他来了,Mathpix拜拜了~~~文字、表格、公式图片识别神器V0.1测试版俺不是标题党!!!开发背景日常工作中经常遇到大量的图片版文本、表格、公式需要编辑;用手敲?也太OUT了吧,好歹…

离线登陆_iphone手机,苹果手机如何登陆网易163邮箱

在使用iPhone系统邮箱的时候,我们在配置的时候可能会遇到各种各样的问题,导致无法在系统邮件里面使用163邮箱。主要是手机客户端的密码和网页登陆的密码是不一样的。常见问题下面就是有人在使用的时候遇到的问题:登陆密码错误有人知道怎么在i…

Vue 封装echarts饼状图(Pie)组件

目的&#xff1a;减少重复代码&#xff0c;便于维护 效果显示&#xff1a; 组件代码 <template><div class"ldw-data-content-box"><div class"ldw-chilren-box"><div class"title"><div>{{ title }}</div>…

积分上下限无穷_数学分析|第九章 定积分利用等价无穷小量和定积分定义解决数列极限问题总结...

当公式或文字展示不完全时&#xff0c;记得向左←滑动哦&#xff01;摘要&#xff1a; 当我们利用等价无穷小量时&#xff0c;不仅仅可以利用等价替换&#xff0c;有的时候我们需要利用极限的定义语言来解决问题&#xff0c;当等价无穷小量和连加数列结合在一起时&#xff0c;虽…

关于配置Webapck的 exclude 不过滤 node_modules Babel却没有处理转换node_modules的源码

最近对公司的项目引入了 nanoid 替换 uuid 的使用。但是在sentry日志中发现Unexpected token >的错误。立马查看编译后bunld发现 nanoid 箭头函数没有被转换。所以对此记录一下原因和解决办法。 报错的原因 1.nanoid 源码是没有经过babel转换的。 查看nanoid的源码&#x…

android 贝塞尔曲线_OpenGL 实践之贝塞尔曲线绘制

说到贝塞尔曲线&#xff0c;大家肯定都不陌生&#xff0c;网上有很多关于介绍和理解贝塞尔曲线的优秀文章和动态图。以下两个是比较经典的动图了。二阶贝塞尔曲线&#xff1a;三阶贝塞尔曲线&#xff1a;由于在工作中经常要和贝塞尔曲线打交道&#xff0c;所以简单说一下自己的…

Node.js Event loop 图解

直接上自己制作的流程图

支持串行隔离级别_从0到1理解数据库事务(上):并发问题与隔离级别

最近准备写一篇关于Spanner事务的分享&#xff0c;所以先分享一些基础知识&#xff0c;涉及ACID、隔离级别、MVCC、锁&#xff0c;由于太长&#xff0c;只好拆分成上下两篇&#xff1a;上&#xff1a;并发问题与隔离级别主要讲事务所要解决的问题、思路&#xff0c;先理解为什么…