1

我想在我的UITableView两个编辑选项中实现:

1.当用户滑动UITableViewCell它会得到UITableViewCellEditingStyleDelete

2.当用户按下编辑按钮时,UITableView将进入编辑模式(我自己在UITableViewCell.m文件中定义:

-(void) setEditing:(BOOL)editing animated:(BOOL)animated {
    if ( (selectionButton.superview == self.contentView && !editing) || (selectionButton.superview != self && editing))
    {
        // REMOVE BUTTON
        [super setEditing:editing animated:animated];

        if (self.editingStyle != UITableViewCellEditingStyleDelete) {
            if (!editing)
            {
                if (selectionButton.superview == self.contentView)
                {
                    [UIView animateWithDuration:0.5 animations:^
                    {
                        selectionButton.alpha = 0;
                        CGRect btnFrame = selectionButton.frame;
                        btnFrame.origin.x -= 120;
                        selectionButton.frame = btnFrame;
                    }
                                 completion:    ^(BOOL done)
                    {
                        [selectionButton removeFromSuperview];
                    }
                 ];
                }
            }
            else {
                // ADD BUTTON
                if (selectionButton.superview != self.contentView)
                {
                    [self.contentView addSubview:selectionButton];
                    selectionButton.alpha = 0;
                    selectionButton.center = CGPointMake(-self.contentView.frame.origin.x / 2 - 30, self.frame.size.height / 2);
                    [UIView animateWithDuration:0.3 animations:^
                    {
                        selectionButton.alpha = 1;
                         selectionButton.center = CGPointMake(-self.contentView.frame.origin.x / 2 + 3, self.frame.size.height / 2);
                     }];
                }
            }

            [self setNeedsLayout];
        }
    }
}

我想将此委托方法添加到我的UITableView

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {

    if (table.editing) {
        return 3;
    } else {
        return UITableViewCellEditingStyleDelete;
    }

    //  return 3;
}

但问题是当我在单元格上滑动手指时,该函数调用了 3 次。

有什么办法可以解决吗?或者它内置在UITableView当用户用手指在这个方法调用的单元格上滑动时?

我可以自己实现UISwipeGestureRecognizer并仅在按下编辑按钮时调用委托函数吗?

4

1 回答 1

1

为什么不直接将 UIGestureRecognizer 添加到单元格并通知视图控制器滑动并执行编辑?

于 2014-01-09T11:11:26.907 回答