Swift中的完成处理程序问题
我必须一次显示一个多个视图组件,只有在显示一个组件时,我才想显示第二个组件,以此类推。某些组件中有动画。所以我有以下代码:Swift中的完成处理程序问题,swift,closures,completionhandler,Swift,Closures,Completionhandler,我必须一次显示一个多个视图组件,只有在显示一个组件时,我才想显示第二个组件,以此类推。某些组件中有动画。所以我有以下代码: func addFirstElement(completion: (_ success: Bool) -> Void) { //code to add view element completion(true) } addFirstElement {(success) -> Void in
func addFirstElement(completion: (_ success: Bool) -> Void) {
//code to add view element
completion(true)
}
addFirstElement {(success) -> Void in
if success {
addSecondElement {(success) -> Void in
if success {
addThirdElement {(success) -> Void in
if success {
addForthElement {(success) -> Void in
if success {
addFifthElement()
}
}
}
}
}
}
}
}
问题是我看到所有元素一次显示,而不是一次显示一个。
我对闭包只有部分了解,所以我不确定我的代码是否正确。除非在创建每个组件时有一些长时间的操作,否则它们当然会同时出现 如果希望看到它们按顺序出现,请在每个控制器创建过程中引入一个需要一些时间的操作 如果希望在上一个动画完成时显示下一个控制器,则需要使用动画的完成处理程序
UIView.animateWithDuration(animationDuration, animations: {
// animation
}, completion: {(finished:Bool) in
// load up the next view
})
在每次
之前使用计时器延迟如果成功
添加的速度太快,以至于您认为它是一次完成的,那么它就是快速的谢谢您的响应,似乎动画就是问题所在。其中我有注释“//代码来添加视图元素”,有一些元素类型的动画。因此,如果第一个元素有动画,而第二个元素没有,我希望第二个元素在第一个元素动画完成后出现。看起来我必须使用动画的完成处理程序。