显示UICollectionView单元格时更新文本标签

时间:2017-02-24 11:49:52

标签: ios swift uicollectionview uilabel uicollectionviewcell

我有一个UICollectionView(A),我可以在水平方向上在不同的单元格之间滚动,这本身就是CollectionViewCell(B)。

我在CollectionViewCell(B)中定义了一些布局,并希望在呈现(A)中的某个单元格时更新一个文本标签。

我所拥有的,(B)

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

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: friendRequestCellId, for: indexPath) as! FriendRequestCell

    cell.user = userFriendRequests?[indexPath.row]
    nameLabel.text = cell.user?.first_name

    return cell
}

问题

nameLabel中的文字被user.first_name错误地填充,因为当滚动(A)中的单元格时,它不会适当更新,即(A)中显示的单元格和{{ (B)中显示的1}}经常不匹配。我非常确定这样做只是在(A)中的单元格出列时更新文本,这当然不是我想要的。

实现所需行为的正确方法是什么?

修改

发现了几乎可以解决问题的漂亮的user.first_name方法,但是一旦下一个单元格开始显示,这就会改变标签。这意味着当加载集合视图时,如果我向前和向后滚动一点,collectionView(_:willDisplay:forItemAt:)包含第二个单元格的nameLabel,同时显示第一个单元格。寻找某种" didDisplay"方法,但没有找到类似的东西。

firstName + " " + lastName
PS:仍然是一个Swift noob,也考虑过使用某种代表团,但有点不清楚在这种情况下会如何发挥

0 个答案:

没有答案