我有一个UIColelctionView单元格,其中应包含位于firebase数据库中的用户名。
首先我使用:
引用了自定义单元格 let f = FriendCell()
在cellForItemAt indexPath中,我定义每个单元格并引用数据来自的数组。然后我引用特定单元格将从中获取数据的个人用户。
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: userResultCellId, for: indexPath) as! FriendCell
let user = users[indexPath.row]
f.nameLabel.text = user.name
print(f.nameLabel.text!)
return cell
}
当我运行此操作时,控制台print(f.nameLabel.text!)
实际上正确打印了用户名,但它们似乎无法正确传入单元格。
我相信正在发生的是在下载数据之前每个单元格都已设置好,并且namelabel返回nil,因为那里没有值。但奇怪的是,当我打印该值时,它会正确返回名称。有什么建议吗?
答案 0 :(得分:4)
您不需要该行:
let f = FriendCell()
摆脱它。然后在cellForItemAt
中,您需要设置cell
的属性,而不是f
。
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: userResultCellId, for: indexPath) as! FriendCell
let user = users[indexPath.row]
cell.nameLabel.text = user.name
return cell
}