Настройка rootviewcontoller в AppDelagate после удаления SceneDelegate - PullRequest
1 голос
/ 09 января 2020

Я удалил SceneDelegate.swift и удалил соответствующую запись из файла .plist.

Поскольку мой проект не поддерживает iPad, мне не понадобится SceneDelegate. Я прав?

Я использую SwiftUI, поэтому нет и раскадровки

Теперь в файле AppDelegate

var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

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

  if (TegKeychain.get("ISLOGGEDIN") == "1") {

           //present WelcomeScreen.swift

        } else {

            //present Login.Swift
        }

        return true
    }

Другие файлы

struct Login: View {
    var body: some View {
        Text("Login")
    }
}

struct WelcomeScreen: View {
    var body: some View {
        Text("WelcomeScreen")
    }
}

I искал в Интернете и не смог найти полезную информацию о том, как представить контроллер представления без раскадровки. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 09 января 2020

Вот контрольный список того, что я сделал для поддержки отката сцен из нового проекта SwiftUI iOS, созданного из шаблона:

  1. Удалите ключ UIApplicationSceneManifest из Info.plist

  2. Удалить все методы делегата, связанные с сеансом сцены, из AppDelegate

  3. Удалить SceneDelegate

  4. Обновлен AppDelegate следующим образом

    import UIKit
    import SwiftUI

    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate {

        var window: UIWindow?

        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            let contentView = ContentView() // << default Hello World

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

            return true
        }

    }
Build & Run - работает.
...