【发布时间】:2020-06-22 14:16:45
【问题描述】:
我有多个标签,我希望它们一个接一个地进行动画处理。所以我构建了一个完成处理程序,它应该在前一个任务完成后执行下一个任务。 (firstTask -> secondTask -> thirdTask -> FourthTask 在最后。)
但由于某种原因,所有动画都是同时执行的。我做错了什么?
func firstTask(completion: (_ success: Bool) -> Void) {
UIView.transition(with: labelOne,
duration: 1,
options: .transitionCrossDissolve,
animations: { [weak self] in
self?.labelOne.text = arrayOne[GenOne]
}, completion: nil)
completion(true)
}
// two more tasks in between just like the firstTask func …
func fourthTask() {
UIView.transition(with: labelFour,
duration: 1,
options: .transitionCrossDissolve,
animations: { [weak self] in
self?.labelFour.text = arrayFour[GenFour]
}, completion: nil)
}
完成处理程序:
firstTask { (success) -> Void in
if success {
secondTask { (success2) -> Void in
if success2 {
thirdTask { (success3) -> Void in
if success3 {
fourthTask()
}
}
}
}
}
}
【问题讨论】:
-
您正在使用每个函数中的
completion(true)立即调用完成处理程序
标签: ios swift xcode completion