gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 06:38:07 25 4
gpt4 key购买 nike

我的问题是,我有一个包含多个单元格的表格 View 。在这些单元格内部有图像,如果它们被贴上胶带,它们会出现绿色边框。如果我有很多单元格并且我点击了例如第一个单元格中的第一张图片,那就是问题发生的时候。当我开始更快地向下滚动表格时,相同类型的其他单元格也有第一张带有绿色边框的图片,即使它们位于单元格编号 13 或其他内容中。我认为那是因为它们是可重复使用的电池,但我如何才能确保只有一个被贴上胶带的电池能够保持变化?希望你们明白我的意思,我知道这有点令人困惑。这是两个自定义单元格之一,带有将边框变为绿色的代码。 bouncingRoundImages 类型的图像只是 UIImage,我创建了 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
}
}


}

最佳答案

这听起来像是一个可重复使用的单元格问题。尝试在 prepareForReuse 中将图像设置为 nil 并将 borderWidth 设置为 0。

override func prepareForReuse()
{
super.prepareForReuse()
firstImage.image = nil
secondImage.image = nil
firstImage.layer.borderWidth = 0
secondImage.layer.borderWidth = 0
}

关于ios - 在一个 tableviewcell 中所做的更改会影响其他单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39060099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com