您好,我对此很陌生,我正在尝试在自定义的UITableViewCell上显示firebase子集合的数据。我在此单元格中创建了四个具有约束的自定义UILabel,其中两个标签将显示Firestore中特定文档中包含的数据。为此,我正在使用三个文件,其中两个用于查看控制器。
第一个是名为File.Swift的文件(出于隐私目的,我已更改了变量名,文件/视图控制器名和类)。其中包含的变量将保存Firebase中的数据:
File.swift 导入基金会
class array1 {
var item1: String!
var item2: String!
var item3: String!
init(item1: String, item2: String, item3: String ) {
self.item1 = item1
self.item2 = item2
self.item3 = item3
}
}
第二个视图控制器文件链接到定制的UITableViewCell,并在UITableViewCell内部连接了标签:
File2.swift
import UIKit
class tableViewCell: UITableViewCell {
@IBOutlet weak var firstLabel: UILabel!
@IBOutlet weak var secondLabel: UILabel!
@IBOutlet weak var thirdLabel: UILabel!
@IBOutlet weak var fourthLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
func configureCell(parameter1: array1) {
secondLabel.text = parameter1.item1
fourthLabel.text = parameter1.item2
}
第三个视图Controller File具有链接到它的UITableView以及与我的问题无关的其他标签。在这里:
File3.swift
import UIKit
import Firebase
import FirebaseFirestoreSwift
import FirebaseAuth
class myClass: UIViewController, UITableViewDataSource, UITableViewDelegate {
var myArray = [array1]()
var myArrayDataCollection: CollectionReference!
lazy var username = userNameLabel.text!
@IBOutlet private weak var tableView1: UITableView!
@IBOutlet weak var userNameLabel: UILabel!
var db = Firestore.firestore()
var userName3 = ""
override func viewDidLoad() {
super.viewDidLoad()
self.tableView1.delegate = self
self.tableView1.dataSource = self
self.tableView1.estimatedRowHeight = 80
self.tableView1.rowHeight = UITableView.automaticDimension
self.tableView1.reloadData()
myArrayDataCollection = db.collection("users").document("\(username)").collection("array_data")
userNameLabel.text = userName3
}
override func viewWillAppear(_ animated: Bool) {
myArrayDataCollection.getDocuments { (snapshot, error) in
if let err = error {
print("Error fetching docs: \(err)")
} else {
guard let snap = snapshot else { return }
for document in snap.documents {
let data = document.data()
let firstItem = data["first_item_data"] as? String ?? ""
let secondItem = data["second_item_data"] as? String ?? ""
let documentId = document.documentID
let newArray = array1(item1: firstItem, item2: secondItem, documentId: documentId)
self.myArray.append(newArray)
}
self.tableView1.reloadData()
}
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView1.dequeueReusableCell(withIdentifier: "QueueCell", for: indexPath) as? Retrieval_Cell {
cell.configureCell(paramater1: myArray[indexPath.row])
return cell
} else {
return UITableViewCell()
}
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}
}
我想知道这是否与我的功能(func configureCell)有关。我的单元格的标识符是正确的,因此如果有人可以帮助我,我将不胜感激。当我在模拟器上运行此命令时,我得到的都是空表单元格,客户UITableViewCell内的标签不会出现。