所以我有一个UITableView,并且在顶部单元格(第一个单元格)上,在cell.detailText上有一个计时器。计时器会显示,但是表格视图无法滚动到第一个单元格,因为此计时器会不断更新单元格文本标签。当用户滚动时,如何在不停止计时器的情况下使表格视图正确滚动? 请帮忙 预先感谢。
答案 0 :(得分:1)
您不需要继续调用reloadData()。您可以在单元格本身中完成所有计时器工作-您只需要记住在完成计时器后会使计时器无效。我维护了一个执行类似操作的应用程序,并使用以下命令:
@IBOutlet weak var timeLeftLbl: UILabel!
var secondTimer: Timer!
var secondsLeft: Int = 0
func configureCell(item: PreviousAuctionItem) {
//Timers
secondsLeft = getSecondsLeft(endTime: item.endDate)
timeLeftLbl.text = secondsLeft
secondTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.decreaseTimeLeft), userInfo: nil, repeats: true)
}
@objc func decreaseTimeLeft() {
if secondsLeft > 0 {
secondsLeft -= 1
timeLeftLbl.text = secondsLeft.formatTimeAsString()
} else {
timeLeftLbl.text = ""
secondTimer?.invalidate()
}
}
override func prepareForReuse() {
secondTimer?.invalidate()
}
getSeconds方法是一种API方法,我用来获取商品剩余的时间。
希望这会有所帮助!