我想在我的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
并仅在按下编辑按钮时才能调用委托函数吗?
答案 0 :(得分:1)
为什么不直接向单元格添加UIGestureRecognizer并通知视图控制器滑动并执行编辑?