为什么 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()
}
我有一个 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()
}