为什么UIImage的部分加载到TableViewCells中?



我有一个表格视图。首先,我从数据库中加载所有单元格的文本数据。接下来,我从另一个数据库加载每个单元格的图像。但是当我尝试设置图像时,它们没有显示。

如果我使用

let cell = myTableView.dataSource?.tableView(myTableView,
cellForRowAt: indexPath) as? MyTableViewCell

然后仅在不可见单元格中加载图像。这意味着我看到的第一个单元格(向下滚动之前(不显示其图像。但所有其他人都这样做。

另一种方式,如果我使用

let cell = myTableView.cellForRow(at: indexPath) as? MyTableViewCell

然后相反的情况发生了 - 只有我看到的那些单元格显示它们的图像,但所有其他单元格都没有。

之后我做

cell.setImage(image: image)
func setImage(image: UIImage) {
guard let myImageView = myImageView else { return }
myImageView.image = image
}

我设置的图像不是func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {...},因为正如我所说,图像是在创建单元格之后出现的。

加载后,您需要刷新主线程中的表视图。您可以通过以下方式做到这一点:

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