gpt4 book ai didi

ios - 滚动时 UITableViewCell 内容发生变化,因为在其中一个单元格中运行计时器

转载 作者:行者123 更新时间:2023-11-28 12:04:22 25 4
gpt4 key购买 nike

我有一个包含 3 个单元格的表格 View 。在其中一个单元格中,我试图显示一个计时器,它在滚动时显然会弄乱我的单元格内容。

这是我的代码:

   func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! StatsuSessionTableViewCell

if indexPath.row == 0 {
// do something
return cell
} else if indexPath.row == 1 {
// do something
return cell
} else if indexPath.row == 2 {
_ = Timer.every(1.second) { (timer: Timer) in
let time = self.date.timeIntervalSince(Date())
cell.statusTitle.text = "TIME"
cell.statusDescription.text = time.timerFormat

if time < 0 {
timer.invalidate()
}
}
return cell
}

return cell
}

如果我删除计时器并只显示一些文本,我没有任何问题。但显然因为单元格被销毁并重新创建这弄乱了我的内容,计时器也会出现在 indexpath.row 0 而不仅仅是 indepxath.row 2。

有什么解决方法吗?

最佳答案

所以您的问题是您在 cellForRowAt: 中创建了计时器。计时器也适用于通过重用此单元格创建的单元格。因此,您必须在 StatsuSessionTableViewCell 中实现此计时器逻辑。还在单元格中实现 prepareForReuse 方法并使那里的计时器无效。这是我可以建议的最安全的方法。

关于ios - 滚动时 UITableViewCell 内容发生变化,因为在其中一个单元格中运行计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49715745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com