Этот вопрос уже задавался здесь, и решение больше не актуально, потому что в iOS13 есть некоторые изменения. Как я могу оставаться в системе после закрытия приложения и его повторного открытия.
У меня есть WelcomeViewController
, которое появляется, когда вы не вошли в систему, и класс CoffeeViewController: UIViewController
, который должен появиться, если пользователь вошел в систему .
class CoffeeViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
checkAuthn()
}
func checkAuthn() {
if Auth.auth().currentUser == nil {
DispatchQueue.main.async {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = storyboard.instantiateViewController(withIdentifier: "welcomeScreen") as? WelcomeViewController
self.present(initialViewController!, animated: true, completion: nil)
}
} else {
print("Done")
}
}
}
и я знаю, что должен реализовать контроллер rootview в SceneDelegate
(ранее это было в методе didFinishLaunchingWithOptions
). И я не знаю, как это сделать правильно. Я пробовал этот способ, но у меня не получилось.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
let vc = CoffeeViewController()
let nc = UINavigationController(rootViewController: vc)
window?.rootViewController = nc
window?.makeKeyAndVisible()
}
------------------------- Часть 2- -----------------------------------------
после этого изменения в sceneDelegate:
guard let windowsScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: windowScene)
window?.rootViewController = UINavigationController(rootViewController: CoffeeViewController())
window?.makeKeyAndVisible()
Я получаю сообщение об ошибке:
ошибка
------------------------- Решение, часть 3 ------------- ---------------------
Я заменил код в sceneDelegate, и он работает нормально.
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: windowScene)
let homeVC = UIStoryboard(name:"Main", bundle: nil).instantiateViewController(withIdentifier: "ShopsMain") as! CoffeeViewController
let navC = UINavigationController(rootViewController: homeVC)
window?.rootViewController = navC
window?.makeKeyAndVisible()