UITableView
处于编辑模式。每个单元格都有一个UISwitch
。委托方法tableView(_ tableView:canEditRowAt:)
仅对交换机所在的单元格返回true
。
当切换值更改为on
时,单元格应该可编辑,当它变为off
时,它将变为不可编辑。
我尝试通过设置isEditing=false
来更改单元格的编辑模式。但除非我致电tableView.reloadData()
,否则单元格的编辑模式不会改变。但是,当我在切换值更改后立即重新加载数据时,切换动画不可见。
在单元格上调用tableView.reloadRows
也会破坏切换动画。
如何在保留单元格中的切换动画的同时启用/禁用单个UITableViewCell
进行编辑?
答案 0 :(得分:0)
假设:您拥有委托给您的单元格的SwitchTableViewCell和ViewController,并处理开关值的变化。在委托方法中,假设didChangeSwitchValue(at indexPath: IndexPath, newValue: Bool)
,您需要更新模型,然后调用以下行来更新tableView布局,而不会破坏切换动画。
假设编辑样式用于删除,则以下行修复了动画:
self.tableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.automatic)
请注意,我已尝试使用UITableViewRowAnimation.none
和tableView.reloadData()
,正如您所说动画中断,但动画选项UITableViewRowAnimation.automatic
看起来很好。如果您对其他编辑模式有任何问题,请更新您的问题。