我有一个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,也考虑过使用某种代表团,但有点不清楚在这种情况下会如何发挥