我一次只能显示一个视图组件,只有当显示一个时我想显示第二个视图组件,依此类推。某些组件中有动画。所以我的代码是:
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()
}
}
}
}
}
}
}
}
问题是我看到所有元素一次显示,而不是一次显示。 我对闭包只是部分清楚,所以我不确定我的代码是否正确。
答案 0 :(得分:0)
除非你在创建每个组件时有一些冗长的操作,否则它们看起来似乎都会立刻出现。
如果您希望看到它们按顺序出现,请引入一个操作,该操作需要一些时间进入每个控制器创建。
如果您想在上一个动画完成时显示下一个控制器,那么您需要使用动画的完成处理程序
UIView.animateWithDuration(animationDuration, animations: {
// animation
}, completion: {(finished:Bool) in
// load up the next view
})