在特定时间后如何重新加载表视图

时间:2018-09-30 14:16:45

标签: swift tableview

我必须调用一个api,当调用api时,我必须在下一个控制器上移动并显示带有数据列表的表,但是我的问题是当我移至下一个控制器时,api调用尚未完成,因此表视图被清空。有什么办法可以让我在特定时间后重新加载表视图

2 个答案:

答案 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调用完成,然后再转到下一个使用该完成处理程序的控制器。