我必须调用一个api,当调用api时,我必须在下一个控制器上移动并显示带有数据列表的表,但是我的问题是当我移至下一个控制器时,api调用尚未完成,因此表视图被清空。有什么办法可以让我在特定时间后重新加载表视图
答案 0 :(得分:1)
进行API调用时,您应该具有某种类型的完成处理程序。利用它!
您可以1)在API调用完成后显示表视图,或2)首先显示表视图,然后在API调用完成后重新加载它。
伪代码:
// 1)
showLoadingIndicator()
performAPICall(completion: { data, error in
if error != nil {
performSegue(withIdentifier: "show table view", sender: data)
// remember to pass the data in prepareForSegue
hideLoadingIndicator()
}
})
// or
// 2)
performSegue(withIdentifier: "show table view", sender: nil)
// in the table view controller,
performAPICall(completion: { data, error in
if error != nil {
self.data = data
self.tableView.reloadData()
}
})
答案 1 :(得分:-2)
您可以通过使用DispatchTime来实现。
let time = DispatchTime.now() + 5
DispatchQueue.main.asyncAfter(deadline: time) {
// reload your table view here
}
但是为了获得良好的编程效果,请先让您的API调用完成,然后再转到下一个使用该完成处理程序的控制器。