如何为单个UITableViewCell启用动画编辑模式?

时间:2017-10-24 14:38:11

标签: swift uitableview

UITableView处于编辑模式。每个单元格都有一个UISwitch。委托方法tableView(_ tableView:canEditRowAt:)仅对交换机所在的单元格返回true

当切换值更改为on时,单元格应该可编辑,当它变为off时,它将变为不可编辑。

我尝试通过设置isEditing=false来更改单元格的编辑模式。但除非我致电tableView.reloadData(),否则单元格的编辑模式不会改变。但是,当我在切换值更改后立即重新加载数据时,切换动画不可见。

在单元格上调用tableView.reloadRows也会破坏切换动画。

如何在保留单元格中的切换动画的同时启用/禁用单个UITableViewCell进行编辑?

1 个答案:

答案 0 :(得分:0)

假设:您拥有委托给您的单元格的SwitchTableViewCell和ViewController,并处理开关值的变化。在委托方法中,假设didChangeSwitchValue(at indexPath: IndexPath, newValue: Bool),您需要更新模型,然后调用以下行来更新tableView布局,而不会破坏切换动画。

假设编辑样式用于删除,则以下行修复了动画:

self.tableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.automatic)

请注意,我已尝试使用UITableViewRowAnimation.nonetableView.reloadData(),正如您所说动画中断,但动画选项UITableViewRowAnimation.automatic看起来很好。如果您对其他编辑模式有任何问题,请更新您的问题。