Я использую tableView.backgroundView
, чтобы установить текст по умолчанию, когда мой массив пуст и нет данных для подачи в tableView
.Код работает.
Проблема в том, что ДАЖЕ Если есть данные, сначала он вроде «Нет результатов» на долю секунды, но вполне очевидно, а затем tableView
перезагружается с фактическими даннымииз массива.Как я могу это исправить?
func numberOfSections(in tableView: UITableView) -> Int {
var numOfSections: Int = 1
if comments.count > 0 {
numOfSections = 1
tableView.backgroundView = nil
}
else {
numOfSections = 0
activityIndicator.stopAnimating()
let noDataLabel: UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: tableView.bounds.size.height))
noDataLabel.text = "Silence in the comments! \r\nSay something..."
noDataLabel.textColor = UIColor.black
noDataLabel.textAlignment = .center
tableView.backgroundView = noDataLabel
tableView.backgroundView?.backgroundColor = UIColor.hex("D8D8D8")
tableView.separatorStyle = .none
}
return numOfSections
}
ОБНОВЛЕНИЕ:
Даже когда я добавляю их в то место, откуда они получают данные, то же самое происходит снова.Состояние отсутствия данных сначала мигает, и оно становится очевидным, а затем показывает фактические результаты.Функция ниже вызывается в viewWillAppear
func loadComments() {
activityIndicator.startAnimating()
if let id = postId {
Api.Post_Comment.REF_POST_COMMENTS.child(id).observe(.childAdded, with: {
snapshot in
Api.Comment.observeComments(withPostId: snapshot.key) {
comment in
self.fetchUser(uid: comment.uid!, completed: {
self.comments.append(comment)
self.activityIndicator.stopAnimating()
self.tableView.reloadData()
if self.comments.count > 0 {
self.numOfSections = 1
self.tableView.backgroundView = nil
}
else {
print("ELSE")
}
})
}
})
print("No data")
self.numOfSections = 0
self.activityIndicator.stopAnimating()
let noDataLabel: UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.tableView.bounds.size.width, height: self.tableView.bounds.size.height))
noDataLabel.numberOfLines = 0
noDataLabel.text = "Silence in the comments! \r\nSay something..."
noDataLabel.textColor = UIColor.darkGray
noDataLabel.textAlignment = .center
self.tableView.backgroundView = noDataLabel
self.tableView.backgroundView?.backgroundColor = UIColor.hex("D8D8D8")
self.tableView.separatorStyle = .none
}
}