热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

为什么手动设置的根视图控制器显示黑屏?

如何解决《为什么手动设置的根视图控制器显示黑屏?》经验,为你挑选了1个好方法。

我已经使用Xcode 11,Beta 5手动为iOS 13设置了根视图控制器。删除了对部署信息中main的引用,包括删除了info.plist中main的引用,而我从未发现自己必须在iOS 13之前要做。窗口在SceneDelegate中完成,嵌套在willConnectTo函数中。通常,如果我错过了某个步骤,该应用程序将崩溃。现在,我得到了一个空白的黑屏,而不是看到设置了红色背景的视图控制器。所有这些功能都可以在Beta 5之前使用。

执行了擦除模拟器上的所有内容和设置的操作。清除了构建文件夹,并已在物理设备上运行了该应用程序。也已使用另一台Xcode 11 beta 5的计算机。所有结果均显示在相同的黑屏上。我想念什么?

这是我在willConnectTo函数中嵌套的SceneDelegate文件中的根视图控制器的手动设置:

let viewCon = ViewController()
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewCOntroller= viewCon
window?.makeKeyAndVisible()

rmaddy.. 12

为确保以编程方式完成所有操作后,您可以在iOS 13中看到您的根视图控制器,您必须执行以下操作:

在场景委托中,您必须创建窗口实例和根视图控制器:

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    var window: UIWindow?

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let winScene = (scene as? UIWindowScene) else { return }

        // Create the root view controller as needed
        let vc = ViewController()
        let nc = UINavigationController(rootViewController: vc)

        // Create the window. Be sure to use this initializer and not the frame one.
        let win = UIWindow(windowScene: winScene) 
        win.rootViewCOntroller= nc
        win.makeKeyAndVisible()
        window = win
    }
}

您的Info.plist必须具有“应用程序场景清单”条目。它下面应是“启用多个Windows”条目。根据您的应用设置为是或否。您也可以选择具有“场景配置”条目。

当您在目标的“常规”选项卡上选中“支持多个窗口”设置时,所有这些条目均由Xcode添加。这会将“启用多个窗口”项默认设置为“是”,因此,如果您要场景而不是多个窗口,则可以将其更改为“否”。



1> rmaddy..:

为确保以编程方式完成所有操作后,您可以在iOS 13中看到您的根视图控制器,您必须执行以下操作:

在场景委托中,您必须创建窗口实例和根视图控制器:

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    var window: UIWindow?

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let winScene = (scene as? UIWindowScene) else { return }

        // Create the root view controller as needed
        let vc = ViewController()
        let nc = UINavigationController(rootViewController: vc)

        // Create the window. Be sure to use this initializer and not the frame one.
        let win = UIWindow(windowScene: winScene) 
        win.rootViewCOntroller= nc
        win.makeKeyAndVisible()
        window = win
    }
}

您的Info.plist必须具有“应用程序场景清单”条目。它下面应是“启用多个Windows”条目。根据您的应用设置为是或否。您也可以选择具有“场景配置”条目。

当您在目标的“常规”选项卡上选中“支持多个窗口”设置时,所有这些条目均由Xcode添加。这会将“启用多个窗口”项默认设置为“是”,因此,如果您要场景而不是多个窗口,则可以将其更改为“否”。


推荐阅读
author-avatar
-鹊巢鸠占
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有