CollectionView ReloadItems问题

时间:2019-03-12 23:45:17

标签: ios swift firebase

所以,我有一个带有自定义单元格的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。

但是,它不起作用。任何想法

0 个答案:

没有答案