所以,我有一个带有自定义单元格的collectionView。单元格内部是一个视图,backgroundColor取决于firebase观察者通知。
我正在像这样设置“ collectionView cellForItem”:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = self.dequeueReusableCell(withReuseIdentifier: "userCell", for: indexPath) as! UserCell
cell.user = users[indexPath.item]
return cell
}
在我的自定义单元格中,我将用户设置为:
var user: User? {
didSet {
guard let status = user?.online else { return }
activeIndicator.backgroundColor = status ? UIColor.green : UIColor.lightGray
}
}
在我的viewController中,我有一个函数可以观察Firebase节点上的更改。具体来说,是布尔值。
private func observeChanges() {
guard let uid = Auth.auth().currentUser?.uid else { return }
let userReference = Database.database().reference().child("Users")
/** Notification: Update local users **/
userReference.observe(.childChanged) { (snapshot) in
guard let dictionary = snapshot.value as? [String: Any] else { return }
let user = User(dictionary: dictionary)
if snapshot.key != uid {
if user.online ?? false {
for (index, value) in self.users.enumerated() {
if value.username?.contains(find: user.username ?? "") ?? false {
let indexPath = IndexPath(item: index, section: 0)
self.reloadItems(at: [indexPath])
}
}
}
}
}
}
如果该值为'true',我想如图所示重新加载indexPath。此实习生在关联的单元格内更新我的视图的backgroundColor。
但是,它不起作用。任何想法