【问题标题】:iOS - UITableView reloadData after delayiOS - 延迟后的 UITableView reloadData
【发布时间】:2017-12-14 06:02:46
【问题描述】:

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

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

但它向我显示了一个错误:Ambiguous use of 'reloadData'

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

这是带有错误消息的快照

【问题讨论】:

  • 将您的方法名称更改为其他名称,例如 reloadDataWithDelay 并检查
  • 如果延迟的目的是等待某个异步任务不要这样做
  • @vadian,你是绝对正确的,我需要这个功能来达到同样的目的。我有一些动画操作,需要 tableview 等待几个时间间隔,以重新加载其数据。

标签: ios swift uitableview delay reloaddata


【解决方案1】:

重命名您的函数,因为它与 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】:

    我会使用块来解决这个问题,如下所示:

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

    【讨论】:

      【解决方案3】:
        extension UITableView {
          func reloadDataAfterDelay(delayTime: TimeInterval) -> Void {
          let when = DispatchTime.now() + delayTime
             DispatchQueue.main.asyncAfter(deadline: when) {
                 self.reloadData()
             }
          }
        }
      

      【讨论】:

      • 你会想要一个 [weak self] 在块的开头,否则这不会编译。
      • 现在你已经删除了self? 这可能会导致内存泄漏
      【解决方案4】:

      试试这个:

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

      【讨论】:

      • 'reloadData' 与其默认方法冲突
      猜你喜欢
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      相关资源
      最近更新 更多