代码之家  ›  专栏  ›  技术社区  ›  Krunal

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

  •  1
  • Krunal  · 技术社区  · 9 年前

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

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

    “重新加载数据”的使用不明确

    正确的解决方案是什么?

    这是带有错误消息的快照 enter image description here

    4 回复  |  直到 9 年前
        1
  •  4
  •   Krunal    9 年前

    重命名函数,因为它与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)
        }
    
    }
    
        2
  •  2
  •   tbogosia    9 年前

    我将使用块来处理这个问题,如下所示:

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

    试试这个:

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