У меня есть 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 я предлагаю подключить таймеры к источнику данных. –