问题描述
我遇到了以下问题,我认为这与我在实现 tableView.dequeueReusableCell
以及如何重用单元格时遗漏的某些内容有关。
预期行为:
- 选择一个单元格,单元格应变为绿色
- 向下滚动
- 向上滚动,所选单元格仍为绿色
- 向下滚动,任何未选中的单元格不应为绿色
问题:向下滚动时,未选中的单元格是绿色的(就好像它们已被选中一样)。以下示例显示了第 7 步和最后一步中的问题。
以下是我的相关代码:
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Get a cell
let cell = tableView.dequeueReusableCell(withIdentifier: "InstructionCell",for: indexPath) as! InstructionCell
// Get the instruction that the tableView is asking about
let instructionLabel = cell.instructionLabel
if instructionLabel != nil {
let currentArrayOne = arrayOne[currentArrayOneIndex!]
if currentArrayOne.instructions != nil && indexPath.row < currentArrayOne.instructions!.count {
// Set the instruction text for the instructionLabel
instructionLabel!.text = currentArrayOne.instructions![indexPath.row]
}
}
// Return the cell
return cell
}
func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
let topInstruction = arrayOne[currentArrayOneIndex!].instructions![topInstructionIndex]
print(topInstructionIndex)
print(arrayOne[currentArrayOneIndex!].instructions!.count)
// Check if it is the last instruction
if topInstructionIndex < arrayOne[currentArrayOneIndex!].instructions!.count - 1 {
// Change cell colour to green
let tappedInstruction = tableView.cellForRow(at: indexPath)
tappedInstruction?.contentView.backgroundColor = #colorLiteral(red: 0.3411764801,green: 0.6235294342,blue: 0.1686274558,alpha: 1)
topInstructionIndex += 1
// Scroll to the next instruction
let nextInstruction = IndexPath(row: topInstructionIndex,section: 0)
tableView.scrollToRow(at: nextInstruction,at: UITableView.ScrollPosition.top,animated: true)
return
} else {
// Show the lastInstruction dialog Box
if lastInstructionDialog != nil {
present(lastInstructionDialog!,animated: true,completion: nil)
}
// Finish the instructions
print("This is the last instruction.")
return
}
}
我想在我的自定义 InstructionCell 类中添加 override func prepareForReuse()
,但这也会重置那些实际被选中的单元格。我需要选定的单元格保持选中状态(更改为绿色)。
关于我可以改变什么的任何想法:
- 当滚动进/出视图时,所选单元格保持所选单元格的更改(变为绿色)
- 未选中的单元格在滚动到视图中时不会显示为选中状态
非常感谢任何指导!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)