В качестве альтернативы посмотрите на SceneDelgate.swift
, где вы можете установить корневой вид ключевого окна на все, что вы хотите.
В вашей ситуации, когда успешный вход в систему, вы можете сигнализировать об изменении состояния на SceneDelegate
(например, уведомлением). Затем приложение должно установить контроллер корневого представления для вашего основного представления (как UIHostingController).
Например:
В вашем SceneDelegate
классе добавить: var currentScene: UIScene? // need to keep reference
Затем внутри func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)
Сохранить ссылку на сценув объявленной выше переменной.
self.currentScene = scene
Затем добавьте слушатель, когда вы хотите изменить окно ключа с новым видом:
var keyWindow: UIWindow?
NotificationCenter.default.addObserver(forName: .newUser, object: nil, queue: .main) { [weak self] (notification) in
guard let windowScene = self?.currentScene as? UIWindowScene else { return }
keyWindow = UIWindow(windowScene: windowScene)
keyWindow?.rootViewController = UIHostingController(rootView: Text("hello"))
keyWindow?.makeKeyAndVisible()
}
Простоустановите уведомление, чтобы публиковать, когда вам нужно, и замените Text
любым просмотром.