如何告诉当一个UITableViewCell已经去排队?



我有一个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()
}

关于第二种情况(当一些模态屏幕显示时)-你应该在视图控制器中处理它

相关内容

  • 没有找到相关文章

最新更新