SwiftUI Beta 3 Black Screen

Viewed 1733

I just converted to beta 3 and my previously working SwiftUI code is now rendering a plain black screen. Was there a change in beta 3 that is causing this. Is there a solution to fix it?

Scene delegate code:

    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()

    }
2 Answers

Beta 3 Working Version Of Scene Delgate:

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.


To clarify, beta 1 used UIWindow(frame: ...) which has now changed to UIWindow(windowScene: ...). The parameter passed is now the current scene and type cast to UIWindowScene.

I have no storyboard in my project, All UI is coded programmatically (Not swift UI).

On the launching of the application, after the splash screen, the only Black screen was appearing.

The solution worked for me is, I have disabled/unchecked the "Supports multiple windows" from general settings.

enter image description here

Related