#ios #swift #uitableview #reloaddata
#iOS #swift #uitableview #reloaddata
Вопрос:
У меня есть TableView, который я пытаюсь заполнить из Firebase, но у меня проблема с 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
Комментарии:
1. вы установили источник данных и делегируете? вызывается ли метод делегирования после перезагрузки?
2. Да, я установил их из раскадровки, но методы делегирования вообще не вызываются.
3. Это кажется неправильным, попробуйте переустановить их или сделать это в коде
4. Это тоже не работает.
Ответ №1:
- Попробуйте это после финала })
DispatchQueue.main.async { self.answersTable.reloadData() }
Вы делаете это, чтобы иметь возможность перезагрузить его в основном потоке
- Проверьте подключенный делегат TableView и источник данных
- Если вы используете ячейку Xib, проверьте, зарегистрирована ли она
Комментарии:
1. Комментарий обновлен, проверьте его
2. Все подключено, но не работает.
3. вы сделали это после })??