我有一个带有两个标签和一个图像的自定义单元格。我在Json收到一些来自互联网的数据。一切正常;每个单元格都填充相应的数据。我添加了一个必须像其他标签一样填充的新标签。这是数据:
let cell = tableView.dequeueReusableCellWithIdentifier("friendCell") as! friendCell
cell.friendPicture?.image = newImageUser
cell.friendName.text = "@\(theName[indexPath.row])"
if repliesNumber[indexPath.row] == "0"{
cell.repliesNumber.textColor = UIColor.redColor()
}
else{
cell.repliesNumber.textColor = UIColor(patternImage: UIImage(named:"backgroundPattern")!)
}
if AttachedImage[indexPath.row] != ""{
cell.backgroundColor = .orangeColor()
}
为了测试我已经制作了前两个细胞的颜色。我的问题是第一个两个细胞变色,但如果我向下滚动,每两个,三个,四个细胞(取决于设备 - 设备高度,我猜 - 另外两个细胞也会变色。
它奇怪/奇怪,因为其余的标签工作正常。
我应该从哪里开始寻找?
如果我打印json数据,我收到的一切都没问题
这是一个gif:
基本上我的问题是当我向下滚动数据时只会从标签上消失,其余的标签和图像都不会消失。
答案 0 :(得分:2)
从您的代码中不太清楚的是哪些单元格是"着色"。它来自orangeColor()条件吗?
无论如何,UITableView中的UITableViewCells会被重用,这意味着你可以在离开它们的完全相同的状态下获得它们。这就是为什么,如果你不重置backgroundColor,滚动时它们仍然是橙色的。
所以基本上,每当你在一个单元格中的某个条件下做某事时,不要忘记在不满足条件时恢复它的状态。在你的情况下,这给出了:
// cellForRowAtIndexPath {
if itemIsMultimedia() {
cell.Multimedia.text = "it's multimedia"
cell.Multimedia.hidden = false
}
else {
cell.Multimedia.text = ""
cell.Multimedia.hidden = true
}
答案 1 :(得分:0)
这里是@aimak
if AttachedImage[indexPath.row] != ""{
cell.Multimedia.text = "It's multimedia"
}
else{
cell.Multimedia.hidden = true
}