Приложение SwiftUI для iPad показывает черный экран при включении поддержки нескольких окон - PullRequest
0 голосов
/ 02 июля 2019

Используя SwiftUI на macOS Catalina, при включении «Поддержка нескольких окон» мое приложение для 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 ]

3 голосов
/ 03 июля 2019

Окно должно быть инициализировано как

let window = UIWindow(windowScene: scene as! UIWindowScene)
0 голосов
/ 06 июля 2019

В SwiftUI NavigationView принимает два параметра: по одному для каждого мастера разделения и детализации.

NavigationView {
    MasterView()
    DetailView()
}

Разделение просмотра по-разному отображается на iPhone (показывает главный вид в портретной ориентации) и iPad (показываетподробный вид в портретной).Переключитесь в альбомную ориентацию, чтобы увидеть полный разделенный вид.

Это объясняет то, что мы видим, но я пока не нашел элегантного способа справиться как с iPhone, так и с iPad.Я обновлю этот ответ, когда сделаю это.

...