在UITableViewCell中向左或向右滑动以删除没有删除按钮的单元格?

car*_*onr 8 objective-c uitableview ios

我希望能够在表格视图单元格中的任何位置向左或向右滑动以删除带动画的单元格而不显示删除按钮.我怎样才能做到这一点?

Mad*_*nRP 6

我没有试过并实现过这个,但我会试一试.首先,创建一个自定义UITableViewCell,并让它有2个属性可以使用

  1. 它正在使用的tableView的引用.
  2. 用于在tableView中查找单元格的indexPath.(注意,每次删除此更改的所有单元格的单元格时都需要更新)

在您cellForRowAtIndexPath:创建自定义单元格的位置,设置这些属性.还要向单元格添加UISwipeGestureRecognizer

cell.tableView=tableView;
cell.indexPath=indexPath;
UISwipeGestureRecognizer *swipeGestureRecognizer=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(deleteCell:)];
[cell addGestureRecognizer:swipeGestureRecognizer];
[swipeGestureRecognizer release];
Run Code Online (Sandbox Code Playgroud)

确保手势仅接收水平滑动.

-(BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if([[gestureRecognizer view] isKindOfClass:[UITableViewCell class]]&&
       ((UISwipeGestureRecognizer*)gestureRecognizer.direction==UISwipeGestureRecognizerDirectionLeft
        ||(UISwipeGestureRecognizer*)gestureRecognizer.direction==UISwipeGestureRecognizerDirectionRight)) return YES;
}
Run Code Online (Sandbox Code Playgroud)

在你的 deleteCell:

-(void) deleteCell:(UIGestureRecognizer*)gestureRec
{
    UIGestureRecognizer *swipeGestureRecognizer=(UISwipeGestureRecognizer*)gestureRec;
    CustomCell *cell=[swipeGestureRecognizer view];
    UITableView *tableView=cell.tableView;
    NSIndexPath *indexPath=cell.indexPath;
    //you can now use these two to perform delete operation
}
Run Code Online (Sandbox Code Playgroud)