UIcollectionview的单元格项目隐藏或甚至没有出列

时间:2018-05-01 09:24:48

标签: ios swift uicollectionview

我需要在UICollectionView上显示1个单元格1用户信息的用户数组。 根据用户在线状态,将确定是否在每个单元格上显示在线绿点。 我现在的主要问题是当我向下滚动以显示更多用户时,在线绿点有些消失,有些仍将保留。但是当更多的单元被重用时,绿点将随机显示在其他单元上。我应该实施什么来保持所有绿点正确显示?

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    if user.online != "online"{
        cell2.onlineIcon.isHidden = true
    }
}

2 个答案:

答案 0 :(得分:0)

使用以下内容更改您的cellForItemAt代码:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    if user.online != "online"{
        cell2.onlineIcon.isHidden = true
    } else {
        cell2.onlineIcon.isHidden = false
    }

}

答案 1 :(得分:0)

正如您所提到的那样,细胞会被重复使用。

if子句中设置UI元素的值时,必须添加else子句以设置默认值

if user.online != "online" {
   cell2.onlineIcon.isHidden = true
} else {
   cell2.onlineIcon.isHidden = false
}

或更简单的一行

cell2.onlineIcon.isHidden = user.online != "online"