gpt4 book ai didi

ios - 完成处理程序不起作用(所有任务同时执行)

转载 作者:行者123 更新时间:2023-12-01 21:41:20 25 4
gpt4 key购买 nike

我有多个标签,并且希望它们一个接一个地动画。因此,我建立了一个完成处理程序,该处理程序应在上一个任务完成后执行下一个任务。 (firstTask-> secondTask-> thirdTask-> thirdTask在最后。)
但是由于某种原因,所有动画都在同一时间执行。我究竟做错了什么?

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()
}
}
}
}
}
}

最佳答案

使用完成处理程序时,需要在编写函数的位置分配变量,以便在调用它时可以使用它。例如:

    func changeLabel(completion: (Bool) -> Void)) {
//insert whatever you want the function do
if (whateverYouWantedToHappenCompletes) {
completion(true)
} else {
completion(false)
}
}

changeLabel { (success) in
//now you can use the success parameter
}
如果您无法解决此问题,请查看一些有关如何使用完成处理程序的视频,或者另一个有效的选择是使用UIView.animate下的内置完成处理程序

关于ios - 完成处理程序不起作用(所有任务同时执行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62516506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com