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