我的问题是,我有一个包含许多单元格的tableview。在这些单元格内部有图像,如果它们被录音则会获得绿色边框。如果我有很多单元格,我会点击第一个单元格中的第一张图片,那就是问题发生的时候。当我开始向下滚动表格时,相同类型的其他单元格也会有第一张带绿色边框的图片,即使它们位于13号单元格中。我认为这是因为它们是可重复使用的细胞,但是我怎样才能确保只有一个被录音的细胞保持这种变化呢?希望你们得到我的意思,我知道这有点令人困惑。这是两个自定义单元格中的一个,其代码将边框变为绿色。 bouncingRoundImages类型的图像只是UIImages,我创建了UIImage的自定义子类以使它们反弹。
class TwoPicsTableViewCell: UITableViewCell {
@IBOutlet var containerView: UIView!
@IBOutlet var firstImage: bouncingRoundImageView!
@IBOutlet var secondImage: bouncingRoundImageView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
containerView.layer.cornerRadius = 10
containerView.clipsToBounds = true
setupFirstImage()
setupSecondImage()
}
func setupFirstImage() {
let tappedOne = UITapGestureRecognizer(target: self, action: #selector(checkPicTwo))
firstImage.addGestureRecognizer(tappedOne)
}
func setupSecondImage() {
let tappedTwo = UITapGestureRecognizer(target: self, action: #selector(checkPicOne))
secondImage.addGestureRecognizer(tappedTwo)
}
func checkPicTwo() {
firstImage.bouncing()
if secondImage.layer.borderWidth != 0 {
secondImage.layer.borderWidth = 0
}
}
func checkPicOne() {
secondImage.bouncing()
if firstImage.layer.borderWidth != 0 {
firstImage.layer.borderWidth = 0
}
}
}
答案 0 :(得分:3)
这听起来像是一个可重复使用的细胞问题。尝试在prepareForReuse中将图像设置为nil,将borderWidth设置为0.
as: