如何使 Onboarding 与 iOS13 中的 Scene Delegate 配合使用?

2024-02-21

我正在尝试在 SceneDelegate 中设置我的入门屏幕。

当我运行下面的代码时,它可以编译,但只是进入黑屏。

其中有很多针对 AppDelegate 的精彩入门教程,但针对 iOS13 的新 SceneDelegate 的入门教程却很少。我学习了本教程并尝试将其应用到 SceneDelegate,但我无法让它工作:

这是我的场景委托代码。

    var window: UIWindow?

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

        let launchedBefore = UserDefaults.standard.bool(forKey: "hasLaunched")
        self.window = UIWindow(frame: UIScreen.main.bounds)
        let launchStoryboard = UIStoryboard(name: "Onboarding", bundle: nil)
        let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
        var vc: UIViewController
        if launchedBefore
        {
            vc = mainStoryboard.instantiateInitialViewController()!
        }
        else
        {
            vc = launchStoryboard.instantiateViewController(identifier: "Onboarding")
        }
        UserDefaults.standard.set(true, forKey: "hasLaunched")
        self.window?.rootViewController = vc
        self.window?.makeKeyAndVisible()

    //    guard let _ = (scene as? UIWindowScene) else { return }
    }

我已经尝试过注释掉最后一个警卫声明和不注释掉它。


您创建的窗口不正确,因此最终会出现黑屏。让故事板为您创建窗口会好得多,因为您不知道该怎么做。只需完全删除这一行:

self.window = UIWindow(frame: UIScreen.main.bounds)

您也可以剪掉这一行,因为它也很多余(故事板也会为您执行此操作):

self.window?.makeKeyAndVisible()

您现在唯一的责任是设置self.window?.rootViewController。请注意,您不需要说

vc = mainStoryboard.instantiateInitialViewController()!

因为那已经是根视图控制器了,由情节提要提供给您。因此唯一的事情you在您提出的架构中,需要做的是在用户需要加入的情况下替换根视图控制器。

(See 我的 github 仓库 https://github.com/mattneub/RegistrationExample/blob/master/RegistrationExample/AppDelegate.swift一个工作示例。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 Onboarding 与 iOS13 中的 Scene Delegate 配合使用? 的相关文章

随机推荐

  • 如何从浏览器将用户重定向到 Google Play 上应用页面的评论选项卡?

    我在 Google Play 上发布了一个应用程序 我想要一个将用户重定向到 google play 上应用程序页面上的评论选项卡的网址 在发布应用程序的文档中 有一个用于将用户重定向到应用程序的详细信息选项卡 默认 的 url 我希望当用
  • 如何在数组中查找大于、小于或等于某个值的数字?

    我试图输出小于 5 的值和大于数组中所有值的平均值的值 我不知道如何使这一切顺利进行并输出正确的数字 有人可以帮忙吗 这就是我所拥有的 我快到了 我只是不知道我做错了什么 int numbers 2 4 6 8 10 12 14 16 in
  • PrimeFaces p:focus on p:dataTable 元素

    我目前正在尝试设置一个可编辑的数据表 当用户使用 JavaScript 或支持 bean 编辑单元格时 该表使用 ajax 来保持焦点 因为当发生单元格编辑时 表的其他部分中的数据将需要更新 因此应重新绘制表格 使焦点元素失去焦点 目前我正
  • Matlab fft 函数交换索引

    我编写了一个简单且非常小的 Matlab 代码 用于计算给定数组 或向量 的离散傅里叶变换 我手动计算出来并得到了答案 我的 Matlab 代码也给出了相同的答案 但fft通过交换索引给出了与此不同的答案 以下是我所做的手动计算 这是第二张
  • 如何更改 Windows 控制台应用程序中的文本或背景颜色

    哪个 C 函数更改文本或背景颜色 MS Visual studio 例如cout lt lt This text 如何将 此文本 设为红色 您可以使用 Win32 更改控制台应用程序的颜色 以下是有关如何操作的示例 include stda
  • 关于 WSO2 API Manager 数据源

    我现在正在执行 WSO2 API 管理器 Analytics 2 0 POC 当我将数据源从 H2 更改为 Oracle 时 在 wso2am 2 0 1 SNAPSHOT 中 有 2 个数据源配置文件 master datasources
  • EF EntityCollection 中的更改通知

    在 Silverlight 4 项目中 我使用 WCF RIA 服务 MVVM 原则和 EF 4 我遇到了这种情况 创建了一个名为 Category 的实体和另一个名为 CategoryLocale 的实体 使用 VS 自动执行 没有 PO
  • 修复 Tomcat 8 上的错误代码:ssl_error_no_cypher_overlap

    我有一个便宜的 SSL 证书 我想用 Tomcat 8 0 26 配置它 我在 Linux 上运行以下命令来创建密钥库 root cert keytool import alias root keystore tomcat jks trus
  • 为哈希选择合适的表大小

    如果我有一个 1000 个键集 我的哈希表的合适大小是多少 如何确定 它取决于负载系数 表将增加其大小并重新分布其元素的 满百分比 点 如果您知道正好有 1000 个条目 并且该数字永远不会改变 则只需将负载因子设置为 1 0 将初始大小设
  • 使用 VBA 删除 Excel 中的工作表和数据透视表

    我正在尝试在 VBA 中集成功率枢轴和枢轴图表的创建 并已经完成了很大一部分 然而 我遇到了一个我似乎无法克服的问题 我创建新的工作表 在其中创建数据透视并将其导出为 PDF 完成后 我删除数据透视表和工作表 Sub DeleteAllPi
  • 在 Python 中测试所有组合

    我有两组选择 optionList1 a1 a2 a3 an optionList2 b1 b2 b3 bn 选项列表中的元素数量不一定相等 我必须从第一个选项列表中选择两次 如何确保我已尝试了第一个列表中的 2 个选项和第二个列表中的一个
  • 如何从外部函数更改局部静态变量值

    include
  • JQuery .ressized,如何为alsoResize属性选择子级

    我有弹出的窗口 可以拖动和调整大小 一切都很好 除了我需要调整大小窗口来调整其中的 div 大小 这可以通过设置轻松完成alsoResize selector 但是 此窗口的每个实例都具有相同的 div 和相同的类名 如果调整一个窗口的大小
  • openOptionsMenu 不适用于全屏

    我有一个全屏模式的活动 android theme android style Theme NoTitleBar Fullscreen 我用按钮打开选项菜单 dmenu setOnClickListener new OnClickListe
  • ggsurvplot - 轴交叉于 0,0

    Survminer产生不错的情节 但有没有办法进一步改变常规的结果ggplot 命令 我尝试做的是使 y 轴从原点开始 如上所述here https stackoverflow com questions 13701347 force th
  • 使用 ObjectDB 搜索空用户数据库时出现问题

    我正在创建一个 java 应用程序 它使用 ObjectDB 来创建和维护一组数据库 我目前正在尝试实现一个数据库来存储由用户名和密码字符串组成的用户对象 在 JFrame swing 类上 我有一个用于创建新用户的按钮 单击此按钮时 我希
  • 通过周围像素的平均值去除图像中的孔

    任何人都可以帮助我用从相邻非零像素获取的值来填充这些黑洞 谢谢 做到这一点的一个好方法是解决线性热方程 http en wikipedia org wiki Heat equation 你要做的就是修复好区域像素的 温度 强度 让热量流入坏
  • 基本 Node.js 项目的“属性‘程序’不存在”

    我创建了简单的node js应用程序 源代码来自这里https azure microsoft com en us blog visual studio code and azure app service a perfect fit ht
  • 明显的 BufferBlock.Post/Receive/ReceiveAsync 竞赛/bug

    交叉发布到http social msdn microsoft com Forums en US tpldataflow thread 89b3f71d 3777 4fad 9c11 50d8dc81a4a9 http social msd
  • 如何使 Onboarding 与 iOS13 中的 Scene Delegate 配合使用?

    我正在尝试在 SceneDelegate 中设置我的入门屏幕 当我运行下面的代码时 它可以编译 但只是进入黑屏 其中有很多针对 AppDelegate 的精彩入门教程 但针对 iOS13 的新 SceneDelegate 的入门教程却很少