【发布时间】:2018-08-19 09:53:47
【问题描述】:
我试图不止一次地快速重新加载表格视图。如下代码所示,最初,在 0.5 秒后,tableview “重新加载”,并且从 Firebase 加载 tableview 的所有元素;但是,5.0 秒后,当调用 runTimer() 时,tableview 不会重新加载。本质上,每次在 Firebase 中更新某些内容时,我都试图“重新加载”数据,但似乎没有任何效果。感谢您对解决此问题的任何帮助,因为我已经查看了所有内容并且没有任何运气。
override func viewDidLoad() {
super.viewDidLoad()
checkFireBase()
tableViewResults.delegate = self
tableViewResults.dataSource = self
let nibName = UINib(nibName: "TableViewCell", bundle: nil)
tableViewResults.register(nibName, forCellReuseIdentifier: "tableCell")
txtsearchBar.addTarget(self, action: #selector(searchRecords(_ :)), for: .editingChanged)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
self.tableViewResults.reloadData()
}
runTimer()
}
func runTimer(){
self.timer = Timer(fire: Date(), interval: 5.0, repeats: true, block: { (Timer) in
self.vehicleArray.removeAll()
DispatchQueue.main.async {
self.checkFireBase()
}
})
RunLoop.current.add(self.timer!, forMode: .defaultRunLoopMode)
self.tableViewResults.reloadData()
}
【问题讨论】:
-
你怎么知道数据没有重新加载。您似乎试图每 5 秒重新加载 t,但如果数据确实如此。或者改变它看起来还是一样的。
-
@Chris 我可以通过放入 print 语句看到它发生了变化,我看到它正在从 firebase 获取更新的值,但 tableview 没有重新加载并显示正确/更新的信息跨度>
-
好的,感谢更新
-
我有一个想法,将 reload tableView 调用放在
checkFirebase()方法的末尾(或计时器块内)。目前,当runTimer()被调用时,重载代码会被调用一次,但不会被计时器的代码块调用。 -
@rengineer 你这里不需要计时器,你应该使用firebase的实时监听器,见下面我的回答
标签: ios swift uitableview firebase timer