在一个tableviewcell中所做的更改会影响其他单元格

时间:2016-08-21 01:29:16

标签: ios swift tableview cell

我的问题是,我有一个包含许多单元格的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
    }
}


}

1 个答案:

答案 0 :(得分:3)

这听起来像是一个可重复使用的细胞问题。尝试在prepareForReuse中将图像设置为nil,将borderWidth设置为0.

as: