我有一个带有两个标签和一个图像的自定义单元格。我从互联网上收到一些 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:
基本上我的问题是,当我向下滚动时,数据消失,但仅从标签中消失,其余标签和图像不会消失。
最佳答案
从您的代码中并不清楚哪些单元格是“彩色”的。是来自 OrangeColor() 条件吗?
无论如何,UITableView 中的 UITableViewCell 会被重用,这意味着它们的状态与您离开时的状态完全相同。这就是为什么,如果您不重置背景颜色,当您滚动时它们仍然是橙色的。
所以基本上,每当您在单元格中执行特定条件下的操作时,不要忘记在条件不满足时恢复其状态。在你的情况下,这给出了:
// cellForRowAtIndexPath {
if itemIsMultimedia() {
cell.Multimedia.text = "it's multimedia"
cell.Multimedia.hidden = false
}
else {
cell.Multimedia.text = ""
cell.Multimedia.hidden = true
}
关于ios - Swift 中 UITableView 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57158262/