我有一個UITableView,其中每個單元都有一個標籤。當單元格上的按鈕被按下時,我需要爲每個單元更新每0.01毫秒的標籤。當每個UITableViewCell運行定時器時,它們不會被正確回收
func tick(label: UILabel) {
let timer = Timer.scheduledTimer(withTimeInterval: 0.01, repeats: true) { (timer) in
// functionality to decide what to put in the label goes here
label.text = "some string"
}
}
// button action
@IBAction func startButtonPressed(_ sender: UIButton) {
let buttonPostion = sender.convert(CGPoint.zero, to: tableView)
if let indexPath = tableView.indexPathForRow(at: buttonPostion), let cell = tableView.cellForRow(at: indexPath) as? CustomCell {
tick(label: cell.label)
}
}
我遇到的問題是,當我滾動UITableView單元不能正確回收。例如,如果我點擊頂部單元格上的開始按鈕,定時器開始運行,它的標籤將開始變化,然後如果我向下滾動標籤以查看另一個單元格,它也將變爲與頂部單元格相同,而沒有它的計時器正在啓動。
解決此問題的最佳方法是什麼?
作爲@Tom Harrington的答案的替代方案,我建議將您的計時器與您的數據源相結合。 –