SwiftUI iPad应用程序在启用多个窗口支持时显示黑屏

时间:2019-07-01 23:12:20

标签: swift xcode ipad swiftui ios13

在macOS Catalina上使用SwiftUI,启用“支持多个窗口”时,我的iPad应用在模拟器中启动时显示黑屏

我正在使用现有的SwiftUI项目,唯一的变化是单击“支持多个窗口”复选框

这来自我的SceneDelegate,我认为这是在SwiftUI中设置窗口的正确方法

var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    let window = UIWindow(frame: UIScreen.main.bounds)
    window.rootViewController = UIHostingController(rootView: ContentView())
    self.window = window
    window.makeKeyAndVisible()
}

在我的Info.plist中,我相信我拥有所需的一切

<key>UIApplicationSceneManifest</key>
    <dict>
        <key>UIApplicationSupportsMultipleScenes</key>
        <true/>
        <key>UISceneConfigurations</key>
        <dict>
            <key>UIWindowSceneSessionRoleApplication</key>
            <array>
                <dict>
                    <key>UILaunchStoryboardName</key>
                    <string>LaunchScreen</string>
                    <key>UISceneConfigurationName</key>
                    <string>Default Configuration</string>
                    <key>UISceneDelegateClassName</key>
                    <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
                </dict>
            </array>
        </dict>
    </dict>

2 个答案:

答案 0 :(得分:3)

该窗口必须初始化为

let window = UIWindow(windowScene: scene as! UIWindowScene)

答案 1 :(得分:0)

在SwiftUI中,NavigationView带有两个参数:一个用于拆分视图的主视图和局部视图。

NavigationView {
    MasterView()
    DetailView()
}

在iPhone(以纵向显示主视图)和iPad(以纵向显示详细视图)之间,拆分视图的显示方式有所不同。切换到横向以查看完整的拆分视图。

这解释了我们所看到的,但是我还没有找到一种处理iPhone和iPad的优雅方法。我会在回答时更新此答案。