我有一个表视图,其中单元格的构建方式不同,具体取决于表是否正在编辑 . 具体来说,选择样式在编辑模式时为无,在不在编辑模式时为蓝色 .
当我从一个转换到另一个时,我注意到一些单元格没有更新 . 快速的日志记录告诉我,即使单元格的外观变化很大(例如正确地添加/删除了附件视图),表格视图也不会刷新选择样式(也不是文本) .
这里发生了什么?调用setEditing时是否只更新了单元格的某些属性?大概只有那些具有允许分配单独视图样式的特定方法的人(例如EditingAccessoryType)?我想我会受益于EditingSelectionStyle .
我该如何解决?通过自定义setEditing来更改每个单元格的selectionStyle?我甚至不确定如何迭代表视图来执行此操作 . reloadData不是一个选项,因为我正在使用一些动画 .
3 回答
我发现自定义setEditing:遍历可见单元格并为每个单元设置selectionStyle以使其正常工作 .
如果您查看UITableViewDelegate documentation,您会看到有五种方法可以自定义编辑行为 . 还有方法
在UITableViewDataSource documentation中,在进入编辑模式之前将在每个单元格上调用 . 同样如此
将为所有可编辑的单元格调用 . 如果你想改变单元格的样子,你可以在其中任何一个中进行 . (未实现
canEditRow..
假设所有行都是可编辑的 . )另请注意,在这种情况下,可能还有其他方法可以进入编辑模式,例如在单元格上滑动
将为您刷过的单元格调用:
这适用于Swift 2.3,只是覆盖自定义单元子类中的setEditing方法: