iOS - 延迟后 UITableView 重新加载数据

iOS - UITableView reloadData after delay

我正在尝试创建一个 UITablView 扩展函数以在一段时间延迟后重新加载 table,例如:

extension UITableView {
    func reloadData(afterDelay delayTime: TimeInterval) -> Void {
        self.perform(#selector(self.reloadData), with: nil, afterDelay: delayTime)
    }
}

但它向我显示错误:'reloadData'

的使用不明确

它的正确解法是什么?

这是带有错误消息的快照

重命名您的函数,因为它与 UITableView 的冲突 reloadData()

//---------
extension UITableView {

    // Default delay time = 0.5 seconds
    // Pass delay time interval, as a parameter argument
    func reloadDataAfterDelay(delayTime: TimeInterval = 0.5) -> Void {
        self.perform(#selector(self.reloadData), with: nil, afterDelay: delayTime)
    }

}

我会使用块来解决这个问题,就像这样:

DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delayTime) { [weak self] in
    self?.tableView.reloadData()
}
  extension UITableView {
    func reloadDataAfterDelay(delayTime: TimeInterval) -> Void {
    let when = DispatchTime.now() + delayTime
       DispatchQueue.main.asyncAfter(deadline: when) {
           self.reloadData()
       }
    }
  }

试试这个:

extension UITableView {
    func reloadDataWithDelay(delayTime: TimeInterval) -> Void {
        let delayTime = DispatchTime.now() + 2
        DispatchQueue.main.asyncAfter(deadline: delayTime) {
             self.reloadData()
        }

    }
}