在iOS中滑动后,尝试使表格单元格返回其原始状态

sye*_*dfa 2 objective-c uitableview ios

我有一个UITableView,我使用滑动删除功能,为用户提供删除行的选项.但是,我还实现了一个警报视图,当用户选择删除时会触发警报视图,询问用户是否确定,有两个按钮,是或否.如果用户按下是,则删除该行,这样可以正常工作.

但是,我的问题是,当用户选择"否"时,我无法动画表格单元格的移动以返回其正常的原始状态,同时隐藏它显示的删除按钮.我的问题是,我希望该行在用户在警报上按下no之后执行此操作,并使动画平滑,就像用户最初刷卡时一样.

我的代码如下:

- (void) cancelDelete {

    //[self.tableView reloadData];
    //NSLog(@"the indexpath is: %@ ", self.myIndexPath);
    //[self.tableView deselectRowAtIndexPath:self.myIndexPath animated:YES];
    [self.tableView reloadRowsAtIndexPaths:@[self.deletedRowIndexPath] withRowAnimation:UITableViewRowAnimationRight];

}
Run Code Online (Sandbox Code Playgroud)

我已经留下了注释线,以向您展示我使用/正在使用的内容.

[self.tableView reloadData]将单元格返回到其原始状态,但右侧没有单元格的滑动动画,这样它就会逐渐隐藏删除按钮. [self.tableView reloadRowsAtIndexPaths:@[self.myIndexPath] withRowAnimation:UITableViewRowAnimationRight]是什么在起作用最接近的,但不幸的是,它会导致细胞挺举到左边,然后向右滑动,而我不希望这个最初的抽搐运动.老实说,我认为这样[self.tableView deselectRowAtIndexPath:self.myIndexPath animated:YES]可行,但不幸的是,它在调用时没有做任何事情.我做错了什么?

mat*_*att 5

重新加载完全是错误的策略(正如您所发现的那样).滑动到删除已将表格视图单元格置于editing模式.你想要做的是再次把它放回去,使它不再处于editing模式状态.

有多种方法可以做到这一点.你也许可以打电话tableView:commitEditingStyle:forRowAtIndexPath:.你也许可以打电话setEditing:animated:.在任何情况下,放弃重新加载(这是关于数据)并开始尝试editing模式.