ios - 循环结束后如何调用函数?

标签 ios swift uitableview loops tableview

<分区>

目前我们有一个功能的一部分,在收集 JSON 数据并将其分配给数据对象之后。然后我们遍历数据对象的图像数据值来更新 ImageView 。循环完成后,我们重新加载 TableView 。发生的问题是在更新每个对象后重新加载 TableView ,从而产生闪烁和其他视觉错误。如果 tableview 可以在所有图像数据更新后加载,那就更好了。这是代码的那部分:

  if let extraImages = self.profileData?.images{

    let extraMovieImages = extraImages.images
    for image in extraMovieImages {
      self.updateImage(ImageType: DownloadPic.personal, ImageString: image.filePath, completion: {_ in

        DispatchQueue.main.async {
          self.TableView.reloadData()
        }
      })
    }
  }

最佳答案

你应该使用DispatchGroup

let group = DispatchGroup()
for image in extraMovieImages {
    group.enter()
    self.updateImage(ImageType: DownloadPic.personal, ImageString: image.filePath, completion: {_ in
        group.leave()
    })
}
group.notify(queue: DispatchQueue.main) {
     self.TableView.reloadData()
}

关于ios - 循环结束后如何调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43100470/

相关文章:

ios - 我可以对 iOS 和 tvOS 应用程序使用相同的包标识符吗?

jquery - iPhone 键盘在 phonegap 中将页面向上推

ios - 自定义美丽的时间 slider

ios - UITableViewCell可拉伸(stretch)backgroundView

ios - Cocoapods 与 github fork 项目

ios - iCloud 读取带有 Assets 或 Assets 列表的记录时出错

ios - DateFormatter 不返回 "HH:mm:ss"的日期

MKMapView 的 Swift 自定义标注

swift - UITableViewCell 设置多个部分的 contentView backgroundColor

ios - 在 TableView 中从底部添加新数据