我有一个tableView
,我可以在其中滑动单元格以显示选项 - 在我的情况下,'分享'并且'删除'使用以下方法的选项:
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{
当用户在单元格上滑动以显示选项,然后点按delete
时,我会设置UIAlertController
并确认。如果我删除我的核心数据库中的对象并且我的NSFetchedResultController
负责更新tableView
如果用户拒绝执行删除操作,则单元格仍然保持幻灯片效果仍显示选项。我希望它消失。我知道[tableView reloadData
]或者更有效率地重新加载一个单元格将解决问题,但是我错过了可以完成工作的单元格上的方法调用或属性吗?
答案 0 :(得分:4)
如果您在此处对表格视图进行编辑,则会将单元格设置为正常状态。
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {
[table setEditing:NO animated:YES];
}
如果表格处于编辑状态,其中显示每个单元格旁边的删除按钮,这将导致所有这些删除按钮消失,这可能不是您想要的行为。在这种情况下,您可以立即将表视图设置回编辑模式。动画看起来很好:
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {
[table setEditing:NO animated:YES];
if (yourWasPreviouslyEditingBoolean) {
[table setEditing:YES animated:YES];
}
}
请注意,您需要自己跟踪此状态。检查表视图的isEditing值将始终返回true。
我无法找到告诉单元格直接停止编辑。
答案 1 :(得分:1)
那么,您的问题是关于如何在UITableView
上重新加载一个特定的单元格?不难。
以下代码可以解决问题: -
NSIndexPath * indexpath = [NSIndexPath indexPathForRow:self.deletedTableRow
inSection: self.deletedTableSection];
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[indexpath]
withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
答案 2 :(得分:0)
在导航栏上放置自定义后退按钮解决了同样的问题。我有UITableViewController和UINavigationController。 “自定义后退按钮”操作(实现如此)的行为类似于willDisappear。
请注意滑动“返回”手势。