iOS - 延迟

时间:2017-07-10 13:18:22

标签: ios swift uitableview delay reloaddata

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

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

但是它向我显示错误:模糊地使用' reloadData'

它的正确解决方案是什么?

这是包含错误消息的快照 enter image description here

4 个答案:

答案 0 :(得分:4)

重命名您的功能,因为它与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)
    }

}

答案 1 :(得分:2)

我会使用一个块来解决这个问题:

DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delayTime) { [weak self] in
    self?.tableView.reloadData()
}

答案 2 :(得分:1)

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

答案 3 :(得分:1)

试试这个:

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

    }
}