在UITableView中的UITableViewCell上滑动后,如何以编程方式关闭滑动?

时间:2014-10-29 06:26:29

标签: ios xcode ios8

我在一行上启用向左滑动以显示操作。点击动作后,我希望刷开的表格单元格关闭。我该怎么做呢?

我已尝试cell.setEditing(false, animated:true),但设置编辑并未关闭滑动。

1 个答案:

答案 0 :(得分:6)

注意:我没有足够的声誉来评论您的问题,因此我必须对您的实施做出一些假设。

如果您尝试关闭tableView:commitEditingStyle:forRowAtIndexPath:中的单元格,可以试试这个:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        // remove delete button only after short delay
        [self performSelector:@selector(hideDeleteButton:) withObject:nil afterDelay:0.1];
    }
}

- (void)hideDeleteButton:(id)obj
{
    [self.tableView setEditing:NO animated:YES];
}

使用performSelector:withObject:afterDelay:的原因是Table View Programming Guide for iOS

中的注释
  

注意:数据源不应该从tableView的实现中调用setEditing:animated::commitEditingStyle:forRowAtIndexPath:。如果由于某种原因必须使用performSelector:withObject:afterDelay:方法,它应该在延迟之后调用它。

所有这些都受到以下答案的启发: https://stackoverflow.com/a/22063692/2433921