【发布时间】:2020-12-18 09:53:11
【问题描述】:
我有一个我想从 Firebase 填充的 tableView,但我遇到了 reloadData() 的问题,它不会刷新表格。
这是我的代码:
func showAnswers(pos: Int, name: String){
let n = name
answersReference.observe(DataEventType.value, with: {(snapshot) in
if(!snapshot.exists()){
}else{
let answers = snapshot.children
for answer in answers{
let answersFromDB = AnswerFromDBObject()
answersFromDB.setQuestion(question: (answer as! DataSnapshot).key)
let ansData = (answer as! DataSnapshot).children
for a in ansData{
answersFromDB.setAnswer(answer: (a as! DataSnapshot).key)
}
print("firebase answer: \(answersFromDB.getAnswer())")
self.answerFromDBObject += [answersFromDB]
}
print("array count: \(self.answerFromDBObject.count)")
self.userInfoAnwers.text = NSLocalizedString("users_questions", comment: "").replacingOccurrences(of: "(usernamehere)", with: n)
self.answersTable.reloadData()
}
})
}
还有我的 tableView 委托方法:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return answerFromDBObject.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "answersCell") as! SeeAnswersCell
let answer = answerFromDBObject[indexPath.row]
cell.question.text = answer.getQuestion()
cell.answer.text = answer.getAnswer()
return cell
}
这些是控制台上的打印方法:
firebase 答案:红色
firebase 答案:很好
firebase 答案:伦敦
数组数:3
【问题讨论】:
-
你设置好数据源和委托了吗?重新加载后是否调用了委托方法?
-
是的,我已经从情节提要中设置了它们,但是根本没有调用委托方法。
-
好像不对,尝试重新设置它们,或者在代码中这样做
-
这也不行。
标签: ios swift uitableview reloaddata