所以,我有一个计时器,每0.1秒在我的app委托中将变量递增1。在我的tableViewController中,我在单元格中显示了这个数字。在控制器中有另一个定时器,它重新加载可见的单元。一切正常,除了滚动浏览tableView之后,数字停止变化,直到表格视图未被释放。我已经读过这个问题的解决办法是:
RunLoop.current.add(tableTimer, forMode: RunLoopMode.commonModes)
tableTimer
是我的手机重新加载计时器。然而,这是有效的,但是一旦滚动浏览视图,它就会非常滞后,并且通常是0%的流体。任何修复?谢谢。
编辑:
创建计时器:
func scheduledTimerWithTimeInterval(){
reloadTimer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.reloadTV), userInfo: nil, repeats: true)
RunLoop.current.add(earningTimer, forMode: RunLoopMode.commonModes)
}
更新表格视图:
@objc func reloadTV() {
self.tableView.beginUpdates()
self.tableView.reloadRows(at: self.tableView.indexPathsForVisibleRows!, with: .none)
self.tableView.endUpdates()
}
答案 0 :(得分:0)
对于单元格中的标签,每隔.1秒重新加载一个表视图是非常愚蠢的。有很多原因。解决此问题的最佳方法是遍历所有可见的索引路径,使用索引路径创建cellForRowAtIndexPath,然后直接从那里修改单元格标题,方法如下:
@objc func reloadTV() {
for myIP in (tableView.indexPathsForVisibleRows) {
let cell = tableView.cellForRow(at: myIP)
cell.textLabel?.text = changingVariable
}
}