问题在于:
正如您所看到的,在表格视图单元格中,有多张图片在彼此的顶部显示。我想只显示顶部图片。以下是导致上述tableview单元格出现此行为的相关代码:
func cellTwo(indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cellTwo", forIndexPath: indexPath) as! CathyTaskLogTwoTableViewCell
let pictureImageView = UIImageView()
pictureImageView.contentMode = .ScaleAspectFit
pictureImageView.frame.size.width = 100
pictureImageView.frame.size.height = 100
cell.pictureMessageTextView.addSubview(pictureImageView)
pictureImageView.image = pictures[indexPath.row]
return cell
}
因此,为了删除显示的多张图片,我将以下代码添加到上述函数中:
for subview in cell.pictureMessageTextView.subviews {
print(cell.pictureMessageTextView.textContainer)
if subview != pictureImageView {
if subview != cell.pictureMessageTextView.textContainer {
subview.removeFromSuperview()
}
}
}
然而,这会导致多画面问题消失,但导致文本消失,如下所示:
我希望在保留文字时只显示一张图片。有人能更好地解决这个问题吗?
答案 0 :(得分:1)
问题是细胞被重复使用。您需要考虑到您已经为此单元格提供其图像视图的可能性。
添加图片视图时,请为其添加唯一的tag
。在此之前,请使用viewWithTag
确定您是否已添加图片视图。如果有,请不要添加它!
现在您知道只有一个图像视图,使用viewWithTag
可以获得对它的引用。为其分配适合此行的图像。完成。
答案 1 :(得分:0)
我建议您将图片视图声明为单元格的属性,并且只在它为零时才将其分配,因此您重复使用的单元格不会添加重复的图像视图:
let cell = tableView.dequeueReusableCellWithIdentifier("cellTwo", forIndexPath: indexPath) as! CathyTaskLogTwoTableViewCell
let pictureImageView = cell.pictureImageView
if (!pictureImageView) {
pictureImageView = UIImageView()
pictureImageView.contentMode = .ScaleAspectFit
pictureImageView.frame.size.width = 100
pictureImageView.frame.size.height = 100
cell.pictureImageView = pictureImageView
cell.pictureMessageTextView.addSubview(pictureImageView)
}
pictureImageView.image = pictures[indexPath.row]
return cell