Как я могу задержать выполнение Segue с идентификатором - PullRequest
0 голосов
/ 02 мая 2020

У меня есть RouteV C, и я управляю аутентификацией с него .. либо переключить пользователя на AppV C, либо перенаправить его на страницу аутентификации.

Во время перемещения между приложением & Auth apges Я хочу, чтобы некоторая задержка показывала некоторую анимацию или сообщение в RouteV C

Так что вы можете мне помочь, как сделать задержку между ViewControllers?

class Route: UIViewController{

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(true)

    Auth.auth().addStateDidChangeListener { (auth, user) in
        if user == nil {
            // User Signed out
            self.performSegue(withIdentifier: "Auth", sender: nil)
        } else {
            // User Signed In
            self.performSegue(withIdentifier: "App", sender: nil)

        }
    }

}

Ответы [ 2 ]

2 голосов
/ 02 мая 2020

Используйте asyncAfter метод DispatchQueue, чтобы отложить вызов любого кода. Все, что находится внутри замыкания / блока, будет выполнено после указанной вами задержки, в приведенном ниже случае я установил его на 2 секунды с текущего времени.

DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
    // Your code to execute after a delay of 2 seconds.
    // Before calling asyncAfter perform showing loader or anything you want.
}
0 голосов
/ 03 мая 2020

Я проголосовал за ответ @ badhangane sh, но хотел упомянуть, что UIView.animate имеет блок завершения. Вы можете использовать блоки завершения для выполнения кода после того, как что-то сделано, вместо запуска 2-секундной анимации и 2-секундной задержки asyncAfter (что ненадежно).

// run a 0.5 second animation
UIView.animate(withDuration: 0.5, animations: {
    // your animations
}, completion: { _ in
    // show your view controller once the animation is completed

    // if you want to further delay, use asyncAfter
    DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
        // code excutes after 2 seconds
    }
})

Аналогично, вы можете создать обработчик завершения для вашей пользовательской функции, которая обрабатывает отображение анимации или сообщения.

...