我怎样才能延迟执行带有标识符的 Segue
how can I delay perform Segue with identifier
我有 RouteVC,我正在通过它控制 Auth.. 要么将用户切换到 AppVC,要么将他转移到 Auth 页面。
在执行 App 和 Auth apges 之间的移动时,我想要一些延迟在 RouteVC 中显示一些动画或消息
那你能帮我看看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)
}
}
}
使用DispatchQueue
的asyncAfter
方法延迟调用任何代码。 closure/block 中的任何内容都将在您指定的延迟后执行,在下面的例子中,我将其设置为距当前时间 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.
}
我对@badhanganesh 的回答投了赞成票,但想提一下 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
}
})
同样,您可以为处理显示动画或消息的自定义函数创建完成处理程序。
我有 RouteVC,我正在通过它控制 Auth.. 要么将用户切换到 AppVC,要么将他转移到 Auth 页面。
在执行 App 和 Auth apges 之间的移动时,我想要一些延迟在 RouteVC 中显示一些动画或消息
那你能帮我看看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)
}
}
}
使用DispatchQueue
的asyncAfter
方法延迟调用任何代码。 closure/block 中的任何内容都将在您指定的延迟后执行,在下面的例子中,我将其设置为距当前时间 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.
}
我对@badhanganesh 的回答投了赞成票,但想提一下 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
}
})
同样,您可以为处理显示动画或消息的自定义函数创建完成处理程序。