在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>
答案 0 :(得分:3)
该窗口必须初始化为
let window = UIWindow(windowScene: scene as! UIWindowScene)
答案 1 :(得分:0)
在SwiftUI中,NavigationView带有两个参数:一个用于拆分视图的主视图和局部视图。
NavigationView {
MasterView()
DetailView()
}
在iPhone(以纵向显示主视图)和iPad(以纵向显示详细视图)之间,拆分视图的显示方式有所不同。切换到横向以查看完整的拆分视图。
这解释了我们所看到的,但是我还没有找到一种处理iPhone和iPad的优雅方法。我会在回答时更新此答案。