Ios Swift中UITableView的奇怪行为

Ios Swift中UITableView的奇怪行为,ios,swift,uitableview,custom-cell,Ios,Swift,Uitableview,Custom Cell,我有一个带有两个标签和一个图像的自定义单元格。我从互联网上收到一些Json格式的数据。一切正常;每个单元格都填充相应的数据。我添加了一个新标签,必须像其他标签一样填充。以下是数据: let cell = tableView.dequeueReusableCellWithIdentifier("friendCell") as! friendCell cell.friendPicture?.image = newImageUser cell.friendName.text = "@\(theNa

我有一个带有两个标签和一个图像的自定义单元格。我从互联网上收到一些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中的UITableViewCells是重复使用的,这意味着您将以与离开它们时完全相同的状态提供它们。这就是为什么,如果不重置背景色,它们在滚动时仍然是橙色的

因此,基本上,当您在单元格中的某个条件下执行某项操作时,不要忘记在不满足该条件时恢复其状态。在您的情况下,这将给出:

// cellForRowAtIndexPath {
if itemIsMultimedia() {
    cell.Multimedia.text = "it's multimedia"
    cell.Multimedia.hidden = false
}
else {
    cell.Multimedia.text = ""
    cell.Multimedia.hidden = true
}
这里@aimak

if AttachedImage[indexPath.row] != ""{

        cell.Multimedia.text = "It's multimedia"

    }
    else{

        cell.Multimedia.hidden = true
    }

典型的单元格重用问题。单元格在屏幕上滚动后会被重用,因此您需要确保为
cellforrowatinexpath
中的所有单元格将cell.background color设置为适当的值,否则您将看到以前使用该单元格时的颜色。我遇到了类似的问题。下面的链接帮助我解决了这个问题…可以吗你试试这个链接,我帮不了我:(你只是用你试过的那个labeldid cell.backgroundColor=[UIColor clearColor]?在获取文本之前尝试一下。不要检查无条件。它对我有效。我有确切的问题。还有,您编写上述代码的方法是什么?我的代码在CellForRowatineXpath中。我将尝试简化它。在我的自定义单元格中,我有两个项目:一个图像和一个文本标签。这两个日期都填写得很好,即使向下滚动和向上滚动,数据都是每个indexPath行都有。我添加了第三项,一个标签,说明该单元格是否有多媒体或nor。当我第一次运行tableView时,数据显示得非常完美。但当我在向下滚动之前向下滚动和向上滚动时,数据消失了。但这只是我添加的最后一个标签,其他两项不会让你失望用更多的代码编辑你的问题?可能是一个gif/屏幕截图,说明问题出在哪里?因为我还不清楚。好吧,这看起来也是一个重用问题,但与彩色/橙色问题无关。是否有一个地方可以让你将多媒体标签设置为“it's multimedia”,然后忘记将其重新设置为“it's multimedia”需要的时候?我已经回答了我自己的问题,让你看看我在哪里做的。但这是我在前面的代码中做的,不是吗?我检查它是否是多媒体,所以我更新标签。否则我隐藏它。那我能做什么呢?我检查数组,如果在单元格位置是真的,标签上写着“它是多媒体”,如果不是的话,它会隐藏起来。不管怎样,像这样的事情是我对其余标签所做的。我不知道为什么这一个是不同的。