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

Why are UIImage's partially loaded in the TableViewCells?

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

如果我使用

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 {...} 中设置图像,因为正如我所说,图像是在创建单元格之后出现的。

加载后需要在主线程中刷新Table视图。你可以这样做:

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