Swift3 在另一次选择之后,无法取消选择tableview中以前以编程方式选定的行

Swift3 在另一次选择之后,无法取消选择tableview中以前以编程方式选定的行,swift3,tableview,row,programmatically,deselect,Swift3,Tableview,Row,Programmatically,Deselect,我在cellForRowAt和exact中使用了初始化tableview的同一个函数,代码如下: cell.accessoryType = selectedOption == indexPath.row ? .checkmark : .none 我的tableview自动为selectedOption设置了复选标记,但当我选择另一个选项时,我之前设置的复选标记不会消失,之后,表上有2个复选标记,将allowsMultipleSelection设置为false。为什么会发生这种情况,为什么我的第

我在cellForRowAt和exact中使用了初始化tableview的同一个函数,代码如下:

cell.accessoryType = selectedOption == indexPath.row ? .checkmark : .none
我的tableview自动为selectedOption设置了复选标记,但当我选择另一个选项时,我之前设置的复选标记不会消失,之后,表上有2个复选标记,将allowsMultipleSelection设置为false。为什么会发生这种情况,为什么我的第一个复选标记在选择后不会隐藏

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
     if let cell = tableView.cellForRow(at: indexPath) {
                cell.accessoryType = .checkmark
     }
}

我想如果你重新加载tableview,它会工作的,你的代码很好,只需在didselect中重新加载你的表


谢谢

我在选择之前和之后重新加载它,如果每次选择之前和之后都有错误,我将收到2个复选标记。@ShivamPokhriyal为什么不?只要tableview需要更新,就可以调用reloadData。无论它是在didSelect中还是在任何其他操作中,都没有关系。它不会导致任何性能问题。只是每次单击tableview单元格都要重新加载整个tableview。如果有100个不同类型的单元格,我想这可能会产生一些性能issue@ShivamPokhriyal那么在这种情况下,你应该重新加载所需的单元格,仅此而已。在我看来,重新加载本身的想法是错误的。应该有更好的方法来实现这一点!