gpt4 book ai didi

swift - CollectionViewCell 未显示从 Firebase 接收数据

转载 作者:行者123 更新时间:2023-11-28 07:27:15 25 4
gpt4 key购买 nike

我必须用来自 firebase 的数据填充单元格。但是它们没有显示。帮助并解释我在哪里犯了错误。如何填充单元格数据?

class TrainingProgramViewController: UIViewController {

@IBOutlet weak var collectionView: UICollectionView!
//var trainingPrograms = TrainingProgram.fetchTrainingProgram()
var trainingPrograms = [TrainingProgram]()
let cellScale: CGFloat = 0.7


override func viewDidLoad() {
super.viewDidLoad()
fetchPrograms()

}

func fetchPrograms() {
Database.database().reference().child("programs").observe(.childAdded) { (snapshot) in
if let dict = snapshot.value as? [String: Any] {
print(dict)
let newTitle = dict["title"] as! String
print("Новый тайтл:" + newTitle)
let newDescription = dict["description"] as! String
let trainingCell = TrainingProgram(description: newDescription, title: newTitle)
self.trainingPrograms.append(trainingCell)
print(self.trainingPrograms)
}
}
}


}

extension TrainingProgramViewController: UICollectionViewDataSource {

func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return trainingPrograms.count
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "TrainingProgramCollectionViewCell", for: indexPath) as! TrainingProgramCollectionViewCell
let trainingProgram = trainingPrograms[indexPath.item]
cell.trainingPrograms = trainingProgram

return cell

}

这是一个模型:

class TrainingProgram
{
var description = ""
var title = ""


init(description: String, title: String) {
self.description = description
self.title = title
}
}

这是我的数据库结构:enter image description here

最佳答案

您忘记重新加载您的 collectionView

func fetchPrograms() {
Database.database().reference().child("programs").observe(.childAdded) { (snapshot) in
if let dict = snapshot.value as? [String: Any] {
print(dict)
let newTitle = dict["title"] as! String
print("Новый тайтл:" + newTitle)
let newDescription = dict["description"] as! String
let trainingCell = TrainingProgram(description: newDescription, title: newTitle)
self.trainingPrograms.append(trainingCell)
print(self.trainingPrograms)
}
DispatchQueue.main.async {
self. collectionView.reloadData()
}
}
}

同时设置

 collectionView.delegate = self
collectionView.dataSource = self

在你的collectionView方法中

 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "TrainingProgramCollectionViewCell", for: indexPath) as! TrainingProgramCollectionViewCell
cell.titleLabel.text = trainingPrograms[indexPath.item].title

return cell

}

关于swift - CollectionViewCell 未显示从 Firebase 接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56182469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com