我正在努力在tableview单元格中显示图像。我没有发布所有代码,但这就是我所做的:
将图像保存到文档文件夹中,为每个项目添加文件扩展名和唯一名称
let whereToSavePath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
在表格视图中显示内容并从目录
以下是tableview cellForRowAt indexPath
方法中的代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")
let findPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
for i in 0...allCards.count - 1 {
cell?.textLabel?.text = allCards[indexPath.row].name
let savedFile = (findPath[0] + "/" + allCards[i].cardID + ".png")
print(savedFile)
let image = UIImage(contentsOfFile: savedFile)
cell?.imageView?.image = image
}
return cell!
}
每个单元格都正确显示卡片名称,但始终保持相同的图像,最后一个图像保存。我也尝试过:
allCards[indexpath.row]
但在这种情况下,不显示图像
如果我在控制台中打印savedFile文件名是正确的,对于每张卡我保存了正确的文件,如果我进入文件夹,那么图片就是正确的名称
这里有什么问题?
提前感谢您的帮助。
答案 0 :(得分:1)
因此,问题在于索引路径中单元格内的循环。对于section函数中的行返回的每一行,都会调用此函数一次。所以你几乎不需要在这个函数中使用循环。尝试以下内容。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")
let findPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let card = allCards[indexPath.row]
cell?.textLabel?.text = card.name
let savedFile = (findPath[0] + "/" + card.cardID + ".png")
print(savedFile)
let image = UIImage(contentsOfFile: savedFile)
cell?.imageView?.image = image
return cell!
}