SwiftUI Beta 3 黑屏

Posted

技术标签:

【中文标题】SwiftUI Beta 3 黑屏【英文标题】:SwiftUI Beta 3 Black Screen 【发布时间】:2019-07-03 02:55:14 【问题描述】:

我刚刚转换到 beta 3,我之前工作的 SwiftUI 代码现在呈现纯黑屏幕。是否存在导致此问题的 beta 3 更改。有解决办法吗?

场景委托代码:

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.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).

        // Use a UIHostingController as window root view controller


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


     window.rootViewController = UIHostingController(rootView: ContentView())
     self.window = window
     window.makeKeyAndVisible()

    

【问题讨论】:

【参考方案1】:

Scene Delgate Beta 3 工作版:

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.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).

    // Use a UIHostingController as window root view controller
    if let windowScene = scene as? UIWindowScene 
        let window = UIWindow(windowScene: windowScene)
        window.rootViewController = UIHostingController(rootView: ContentView())
        self.window = window
        window.makeKeyAndVisible()
    

Credit to Reddit post for answer.


澄清一下,beta 1 使用了UIWindow(frame: ...),现在已更改为UIWindow(windowScene: ...)。传递的参数现在是当前场景和类型转换为UIWindowScene

【讨论】:

我在 beta 2 中创建了我当前的项目,并获得了您发布的第一个场景委托,您在创建此项目时处于哪个 beta 版本? @Sudara 我认为我的原始代码来自 beta 1。我认为这与昨天的 beta 3 更改有关。 嗯...有什么区别?我也有同样的问题,但我还没解决 @nunzio 仔细看更新的代码。它在原始代码块之前有一个if let windowScene = scene as? UIWindowScene @DavidL 对不起我的回答,这并不明显。即使这样它对我也不起作用【参考方案2】:

我的项目中没有情节提要,所有 UI 都是以编程方式编码的(不是 swift UI)。

在启动应用程序时,在启动画面之后,出现了唯一的黑屏。

对我有用的解决方案是, 我已从常规设置中禁用/取消选中“支持多个窗口”。

【讨论】:

对我来说同样的场景,但我的从未被检查过,所以这对我不起作用?

以上是关于SwiftUI Beta 3 黑屏的主要内容,如果未能解决你的问题,请参考以下文章

在 MacOS 上构建 SwiftUI “Hello World”

XCode 12 Beta 3 SwiftUI 表单上各部分之间的空间

swiftui 请求 渲染数据

SwiftUI dyld:找不到符号:_$s7SwiftUI7BindingVyxGAA0C11ConvertibleAAMc Xcode 11 beta 5

从 NavigationView 呈现的 SwiftUI 关闭模式表(Xcode Beta 5)

如何在数组大小更改后刷新 ForEach 显示元素的数量(SwiftUI,Xcode 11 Beta 5)