в этом приложении при первом использовании вы получаете 3 страницы приветствия. После последнего я сохраняю bool в true в UserDefaults, чтобы пропустить эти приветственные страницы в следующий раз, когда пользователь запустит приложение.
Для этого в AppDelegate.swift я делаю следующее:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
if UserDefaultsVault.shared.getDidFinishIntro() == true {
self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let mainVC = storyboard.instantiateViewController(withIdentifier: "mainPage") as UIViewController
self.window?.rootViewController = mainVC
self.window?.makeKeyAndVisible()
}
return true
}
Я, конечно, добавил идентификатор раскадровки к моему контроллеру представления в раскадровке, и я также проверил с помощью точки останова, выполняется ли условие (и это правда).
Несмотря на это, главный контроллер не будет создавать экземпляр.
Я сделал другое приложение с этим кодом, и оно всегда работало!
Я что-то ошибся?
В вашем проекте есть SceneDelegate.swift
файл? — person Lifetronic schedule 17.06.2020
Здравствуйте, спасибо за ответ. да. — person Lifetronic schedule 17.06.2020
stackoverflow.com/a/58208876 — person Lifetronic schedule 17.06.2020
Для iOS 13+ вам нужно указать
instantiateViewController(withIdentifier:)
в SceneDelegate, например:Примечание. Ваш код будет работать для устройств с iOS 13 ниже.