繁体   English   中英

iOS-延迟后,UITableView reloadData

[英]iOS - UITableView reloadData after delay

我正在尝试创建UITablView扩展功能,以在一段时间延迟后重新加载表,例如:

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()
        }

    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM