繁体   English   中英

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

[英]What is the correct way to remove the revealed swipe of a UITableViewCell when using editActionsForRowAtIndexPath:?

我有一个tableView ,我在其中启用滑动单元格以显示选项 - 在我的情况下,使用以下方法“共享”和“删除”选项:

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

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

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

如果您在此处对表格视图进行编辑,则会将单元格设置为正常状态。

- (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。

我无法找到告诉细胞直接停止编辑。

那么,你的问题是关于如何在UITableView上重新加载一个特定的单元格? 不难。

以下代码将起到作用: -

NSIndexPath * indexpath = [NSIndexPath indexPathForRow:self.deletedTableRow
                                             inSection: self.deletedTableSection];
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[indexpath] 
                      withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];

解决了在导航栏上放置自定义后退按钮的相同问题。 我有UITableViewController和UINavigationController。 “自定义后退按钮”操作(实现如此)的行为类似于willDisappear。

但请注意滑动“返回”手势。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM