我有一个奇怪的情况,我似乎无法解决。我有2部分的tableView。这两个部分具有相同的CustomTableViewCell(ShareActivityCustomTableViewCell.swift)。
每个单元格都有一个UIButton(自定义切换按钮)。
问题
当用户点击第1部分中的自定义开关按钮时,该单元将从第1部分中删除,并放置在第0部分中。该过程的这一部分工作正常。
但是,一旦重新加载tableView并用户在第0部分中点击了相同的自定义开关,应用就会崩溃,因为索引超出了范围。它将超出范围,因为当用户点击自定义开关时,它正在调用错误的目标。它应该调用:
@IBAction func toggleSwitchSection0Tapped(_ sender: UIButton)
而是调用旧目标:
@IBAction func toggleSwitchTapped(_ sender: UIButton)
我无法理解为什么发生这种情况,因为tableView重新加载正常,单元格按预期交换了位置(第1部分到第0部分)
我在cellForRowAtIndex中的代码非常简单,根据目标将以下目标添加到自定义开关中: 第0节中的cellForRowAtIndex:
cell.toggleSwitch.tag = indexPath.row
cell.toggleSwitch.addTarget(self, action: #selector(ShareListVC.toggleSwitchSection0Tapped), for: .touchUpInside)
第1节中的cellForRowAtIndex
cell1.toggleSwitch.addTarget(self, action: #selector(ShareListVC.toggleSwitchTapped), for: .touchUpInside)
有趣的是,当出现tableView列表并且第0部分中有单元格时,当用户点击第0部分中的自定义开关时,将调用正确的目标。
任何帮助或建议都将不胜感激。...谢谢。
答案 0 :(得分:0)
找出解决方案
因此,在我最初的帖子并重新阅读之后,我认为由于重复使用相同的单元格,每个部分中都具有相同的CustomTableViewCell可能会导致问题。
我为第0部分和第1部分创建了一个单独的CustomTableViewCell,现在一切都按预期工作了!
写下一个问题可以使您以不同的方式看待事物,这真是令人惊讶。