使用editActionsForRowAtIndexPath时,删除UITableViewCell的显示滑动的正确方法是什么?

Sim*_*ver 9 objective-c uitableview ios8

我有一个tableView在其中我可以通过使用以下方法来刷单元格以显示选项 - 在我的情况下,'share'和'delete'选项:

- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{

当用户在单元格上滑动以显示选项然后点击时delete我会打开UIAlertController一个确认.一切都很好,如果他们说删除,因为我删除了我的核心数据库中的对象,我NSFetchedResultController负责更新tableView

如果用户拒绝执行删除操作,则单元格仍保持幻灯片效果仍显示选项.我希望它消失.我知道,[tableView reloadData或者,更有效率,重新加载一个单元格将解决问题,但是我错过了哪个单元格的方法调用或属性可以完成这项工作?

Dav*_*ton 4

如果您在此处结束对表视图的编辑,它会将单元格动画恢复到正常状态。

- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {
    [table setEditing:NO animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

如果表格处于编辑状态,其中每个单元格旁边显示删除按钮,这将导致所有这些删除按钮消失,这可能不是您想要的行为。在这种情况下,您可以立即将表格视图设置回编辑模式。动画看起来不错:

- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {
    [table setEditing:NO animated:YES];
    if (yourWasPreviouslyEditingBoolean) {
        [table setEditing:YES animated:YES];
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,您需要自己跟踪此状态。此处检查表视图的 isEditing 值将始终返回 true。

我无法找到直接告诉单元格停止编辑的方法。