进入/退出编辑模式时重绘UITableViewCell

Ben*_*ard 6 iphone cocoa-touch uitableview ios

我有一个表视图,其中单元格的构建方式不同,具体取决于表是否正在编辑.具体来说,选择样式在编辑模式时为无,在不在编辑模式时为蓝色.

当我从一个转换到另一个时,我注意到一些单元格没有更新.快速的日志记录告诉我,即使单元格的外观变化很大(例如正确地添加/删除了附件视图),表格视图也不会刷新选择样式(也不是文本).

这里发生了什么?调用setEditing时是否只更新了单元格的某些属性?大概只有那些具有允许分配单独视图样式的特定方法的人(例如EditingAccessoryType)?我想我会受益于EditingSelectionStyle.

我该如何解决?通过自定义setEditing来更改每个单元格的selectionStyle?我甚至不确定如何迭代表视图来执行此操作.reloadData不是一个选项,因为我正在使用一些动画.

Ben*_*ard 6

我发现自定义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;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 你为什么要这样做而不是覆盖setEditing:animated:on the cell? (7认同)