我有一个UITableViewCell
,在该单元格中,我设置了一个计时器,用当前时间更新单元格中的标签。每一秒这个计时器都会触发,更新这个标签。但当用户滚动经过这个单元格,或者这个单元格不在屏幕上时,我觉得我应该暂停计时器;没有必要更新当前没有显示的标签,对吗?
有没有一种方法可以检查一个单元格是否在屏幕上?或者还没有排队?
这里有一些代码,你会喜欢的:
class TeamBattleTableViewCell: UITableViewCell {
@IBOutlet weak var resultsSubtitleLabel: MantisLabel!
var timer = Timer()
func updateDisplay() {
...
updateTime()
timer.invalidate()
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateTime), userInfo: nil, repeats: true)
}
@objc func updateTime() {
/*
if self.is_dequeud {
timer.invalidate()
}
*/
let man = TeamBattleManager.get()
let d = man.end_date.offsetFrom(date: Date())
resultsSubtitleLabel.text = d+" remaining"
}
}
我认为你应该停止定时器在prepareForReuse()
override func prepareForReuse() {
super.prepareForReuse()
timer.invalidate()
}
关于第二种情况(当一些模态屏幕显示时)-你应该在视图控制器中处理它