我有一个 TableView ,其中根据表是否正在编辑而构建不同的单元格。具体来说,选择样式在编辑模式下为无,在非编辑模式下为蓝色。
当我从一个转换到另一个时,我注意到一些单元格没有更新。快速的日志记录告诉我,即使单元格的外观发生了很大变化(例如,正确添加/删除了附件 View ), TableView 也不会刷新选择样式(也不会刷新文本)。
这是怎么回事?调用 setEditing 时是否仅更新单元格的某些属性?大概只有那些具有允许分配单独 View 样式(例如 EditingAccessoryType)的特定方法的那些?我想我会受益于 EditingSelectionStyle。
我该如何解决?通过自定义 setEditing 来更改每个单元格的 selectionStyle?我什至不确定如何遍历 TableView 来执行此操作。由于我正在使用的一些动画,reloadData 不是一个选项。
最佳答案
我发现自定义 setEditing: 以遍历可见单元格并为每个单元格设置 selectionStyle 可以正常工作。
- (void)setEditing:(BOOL)editing animated:(BOOL)animated{
[super setEditing:editing animated:animated];
for (UITableViewCell *cell in [self.tableView visibleCells]) {
NSIndexPath *path = [self.tableView indexPathForCell:cell];
cell.selectionStyle = (self.editing && (path.row > 1 || path.section == 0)) ? UITableViewCellSelectionStyleNone : UITableViewCellSelectionStyleBlue;
}
}
关于iphone - 进入/退出编辑模式时重绘 UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10393026/