更改collectionView单元格将更改所有这些

时间:2019-03-14 21:47:35

标签: ios swift firebase uicollectionview

这是从Firebase获取信息的代码。它将更改单元格的imageView图像和标签的文本。运行代码时,所有单元格都具有相同的图像和标签文本。

attr2 = list(map(lambda b:b[2], inputDatasets.values()))

2 个答案:

答案 0 :(得分:2)

实际上,对于每个单元格渲染,您都是从Firebase数据库中获取所有用户的。每个呼叫的最后一个呼叫是您多次看到的用户。它会覆盖先前的内容。

要解决您的问题,您可以将用户存储在数组中。

var users = [User]()

要填充此数组,请在viewDidLoad中调用类似的函数

func fetchUsers() {
        Database.database().reference().child("users").observeSingleEvent(of: .childAdded) { (snapshot: DataSnapshot) in
            if let dict = snapshot.value as? [String : Any] {
                let user = User()
                //set user properties here
                users.append(user)
          }
      }
  }

获取所有用户后,应重新加载collectionView

collectionView.reloadData()

在您的cellForItemAt函数中,您现在可以访问用户

let user = users[indexPath.row]

使用用户变量设置您的单元格

答案 1 :(得分:-1)

要解决此问题,首先您应该从Firebase中以数组形式收集所有数据,然后将该数组用于表视图。