我的表格视图有一个隐藏的图像,当用户完成关卡时,该图像对于相关单元格变为可见。此过程没有问题。
奇怪的是,当我上下滚动表格视图时,此隐藏图像开始随机出现在其他属于未完成级别的单元格上。
如果我离开视图控制器并返回,意外的消失了,如果我再次滚动,它们又回来了。
此外,如果所有图像都被隐藏(表示没有完成的级别),则滚动不会导致此问题。这是我使用的代码段:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "customCell") as! CustomTableViewCell
cell.cellView.layer.cornerRadius = cell.cellView.frame.height / 2
cell.levelLabel.text = levels[indexPath.row]
cell.lockingImage.image = UIImage(named: lockState[indexPath.row])
if completeState[indexPath.row] == "true" {
cell.completedImage.isHidden = false
}
return cell
}
有什么主意吗?
答案 0 :(得分:0)
您可能没有在单元格的false
功能中将图像可见性重置为prepareForReuse
,这导致只要有问题的单元格被重用,图像就可见。
答案 1 :(得分:0)
假设您正在做
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath) as! MyTableViewCell
cell.myImageView.isHidden = true
return cell
}
您应该做的是:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath) as! MyTableViewCell
if levels[indexPath.row].isLevelCompleted {
cell.myImageView.isHidden = false
} else {
cell.myImageView.isHidden = true
}
return cell
}
这是因为您要使单元出队。这意味着UITableView将使用旧单元格。如果您主动更换电池,那您就走了。