我正在尝试创建一个UITableView,其中包含一堆从值开始倒数的单元格。最初,我只是在ViewController上重复运行NSTimer来运行一个函数,该函数将更新标签,然后在表上运行reloadData,这在技术上确实有效,但是存在一些问题。
要多填一些内容,我很清楚NSTimer作为计时器是不准确的,因此我在标签上的时间使用了日期计算。我还考虑过使用CADisplayLink,以便刷新将与屏幕同步,但是这在滚动表时遇到了问题,使其变得非常跳跃。另一个问题是在表上发出“编辑”命令时,由于刷新,UI无法删除行。
因此,我之后考虑将Timer移到每个UITableViewCell中,并且可以通过控制台知道它正在运行,但是该表不会更新。鉴于它无法在表上运行reloadData,这是有道理的,但是我对下一步的定位有些困惑。
我找到了similar thread here,甚至尝试了AsyncTimer suggested here,但是我做错了什么,或者这些不是完全相同的问题吗?感谢您的任何帮助,谢谢!
var timer = Timer()
self.timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.checkTimers), userInfo: nil, repeats: true)
@objc func checkTimers() {
for counter in counters {
if counter.isActive {
counter.updateSeconds()
}
}
tableView.reloadData()
}