在UITableViewCell上实现我自己的滑动

时间:2013-01-16 14:01:38

标签: iphone ios objective-c uitableview

我想在我的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并仅在按下编辑按钮时才能调用委托函数吗?

1 个答案:

答案 0 :(得分:1)

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