Как оставаться на экране запуска до завершения автоматического входа в Scene Delegate?

Я пытаюсь переключить экраны после автоматического входа в мой делегат сцены, и все работает, за исключением того, что мой экран запуска отображается примерно на 10 мс, а затем он переходит в мой ViewController (начальный контроллер просмотра), а затем переключает экраны на экран, который я хочу, чтобы он переключился к. Моя цель состоит в том, чтобы экран запуска отображался все время, пока я вхожу в систему делегата сцены, а затем переключаю экраны после завершения входа. Это код, который я использую

var window: UIWindow?


    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).


        if let windowScene = scene as? UIWindowScene {
                  let window = UIWindow(windowScene: windowScene)
                  let storyboard = UIStoryboard(name: "Main", bundle: nil)
                  if KeychainWrapper.standard.string(forKey: "email") != nil && KeychainWrapper.standard.string(forKey: "password") != nil {
                        Auth.auth().signIn(withEmail: KeychainWrapper.standard.string(forKey: "email")!, password:  KeychainWrapper.standard.string(forKey: "password")!) { (result, error) in
                               if error == nil {
                                    if Auth.auth().currentUser!.isEmailVerified {
                                       /*getting data*/
                                         window.rootViewController = storyboard.instantiateViewController(identifier: "ViewingScreenController") 
                                          self.window = window
                                          window.makeKeyAndVisible()
                                     }
                                     
                           }
                                              
                        }
                                         
                     }
               }
    

        
      // guard let _ = (scene as? UIWindowScene) else { return }
    }```

person Kunal M    schedule 03.08.2020    source источник
comment
Что вы имеете в виду под экраном запуска? Вы имеете в виду буквально LaunchScreen.storyboard? Если да, то вы неправильно поняли, что это такое.   -  person matt    schedule 04.08.2020
comment
@matt да, я имею в виду LaunchScreen.storyboard. он не выполняет эту функцию?   -  person Kunal M    schedule 04.08.2020
comment
Вы можете представить какое-то конкретное представление, пока автоматическое ведение журнала не будет завершено. Он может выглядеть так же, как экран запуска. Но экран запуска отображается до тех пор, пока ваше приложение не будет загружено. Не после.   -  person pawello2222    schedule 04.08.2020
comment
@ pawello2222 Я думал то же самое, но мне интересно, что лучшее решение   -  person Kunal M    schedule 04.08.2020


Ответы (1)


Вы неправильно поняли, что такое стартовый экран. Это всего лишь переходная вещь, представленная средой выполнения перед запуском вашего приложения. Во многих случаях это вообще не видно! И это хорошо, потому что приложение запускается быстро. См. Мой ответ на странице https://stackoverflow.com/a/59700102/341994.

Таким образом, вам не следует создавать какие-либо функции вокруг экрана запуска; это не работает. Ваша цель должна заключаться в том, чтобы миновать экран запуска, что означает, что ваше приложение запускается быстро, и это правильно. То, что вы представите, зависит от вас; теперь ваш код запущен.

person matt    schedule 03.08.2020