Ios 带Firebase数据库的UITableView中的多个自定义单元格
我想创建一个包含两个自定义单元格的tableview,其中的信息来自Firebase数据库。第一个自定义单元格显示日期,第二个自定义单元格显示事件。当我运行应用程序时,tableview只返回第一个自定义单元格,即日期。这是什么原因造成的Ios 带Firebase数据库的UITableView中的多个自定义单元格,ios,swift,uitableview,firebase-realtime-database,Ios,Swift,Uitableview,Firebase Realtime Database,我想创建一个包含两个自定义单元格的tableview,其中的信息来自Firebase数据库。第一个自定义单元格显示日期,第二个自定义单元格显示事件。当我运行应用程序时,tableview只返回第一个自定义单元格,即日期。这是什么原因造成的 import UIKit import Firebase class augustController: UIViewController, UITableViewDataSource, UITableViewDelegate { @IBOutlet
import UIKit
import Firebase
class augustController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var augustController: UITableView!
var ref = DatabaseReference()
var date = [String]()
var event = [String]()
var databaseHandle:DatabaseHandle = 0
var databaseHandle2:DatabaseHandle = 0
override func viewDidLoad() {
super.viewDidLoad()
ref = Database.database().reference()
databaseHandle = ref.child("Events").child("August").child("dates").observe(.childAdded) { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.date.append(actualPost)
}
}
databaseHandle2 = ref.child("Events").child("August").child("events").observe(.childAdded) { (snapshot) in
let post2 = snapshot.value as? String
if let actualPost2 = post2 {
self.event.append(actualPost2)
self.augustController.reloadData()
}
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return date.count
}
func tableView2(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return event.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let augustDate = tableView.dequeueReusableCell(withIdentifier: "augustDate") as! dateCell
augustDate.date.text = date[indexPath.row]
return(augustDate)
}
func tableView2(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let augustEvents = tableView.dequeueReusableCell(withIdentifier: "augustEvents") as! eventCell
augustEvents.even.text = event[indexPath.row]
return(augustEvents)
}
}
您实现了两次
cellForRow
,您必须
var itemsArr = [Item]()
//
//
然后将其设为一个数组并附加此结构类型的项
struct Item {
var isDate:Bool
var content:String
}
还有两个
numberOfRowsInSection
方法。除了将两个cellForRowAt
方法结合起来,还需要解决很多问题。@shu Khan在viewDidLoad中仍然是self.event.append(actualPost2)
和self.date.append(actualPost)
还是两者都是self。itemsArr.append(actualPost2)
和self。itemsArr.append(actualPost)
既然您已经指出此问题已经得到了回答,请回顾您之前的问题,并在适当的情况下执行相同的操作。
struct Item {
var isDate:Bool
var content:String
}