gpt4 book ai didi

ios - 具有自定义单元格的表格 View 在滚动时会重复

转载 作者:行者123 更新时间:2023-11-29 05:31:10 26 4
gpt4 key购买 nike

我创建了一个 UITableView基于“倒计时”计时器应用,每个单元格都有一个“倒计时标签”和一个“开始运行按钮”问题是当我按下按钮时,触发计时器运行,然后我向下滚动,第 10 个单元格也被触发。当我向后滚动时,第一个单元计时器会重置。

搜索后可能是dequeueReusableCell部分,但我不知道如何解决它。

github上的所有代码: https://github.com/evancohi/CountdownTimer

这是我的 cellForRowAt方法设置

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "timerListCellId", for: indexPath) as! TimerListCell

cell.timerLabel.text = self.timerArray[indexPath.row]
cell.missionLabel.text = self.missionArray[indexPath.row]

return cell
}

能给点建议吗?

最佳答案

UITableview 的 dequeueReusableCell 用于重用 tableview 单元格以获得平滑的滚动体验。因此,为了阻止单元格重复,您应该在 cellForRowAt() 方法实现中实现条件检查,以便只有已启动计时器的单元格执行计时器任务。

例如。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "timerListCellId", for: indexPath) as! TimerListCell

cell.timerLabel.text = self.timerArray[indexPath.row]
cell.missionLabel.text = self.missionArray[indexPath.row]
cell.isTimerRunning = self.timerArray[indexPath.row]
if cell.isTimerRunning == true {
// enable trigger
}
else{
// disable trigger
}

return cell
}

在上面的示例中,我创建了timerArray,默认情况下它包含所有“false”条目。当您为单元格启动计时器时,请将同一索引 path.row 处的条目替换为“true”,并在 cellforRow 中使用此数组,以识别触发计时器的单元格。

关于ios - 具有自定义单元格的表格 View 在滚动时会重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57550202/

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