在iOS 7上使用overriden setEditing方法时,禁止使用UITableViewCell删除按钮

时间:2014-01-15 16:14:53

标签: ios ios7

我有几个带有重写- (void)setEditing:(BOOL)editing animated:(BOOL)animated方法的UITableViewCell子类。在我的实现中,我有动画来刷新单元格时显示和隐藏自定义视图。在iOS 6上,这非常有效。我的自定义视图已设置动画,并且未显示默认的删除按钮。但是,在iOS 7上,我获得了自定义视图和动画以及默认的删除按钮。我正在努力找到一种方法来使用我重写的setEditing:animated:而无需获取系统删除按钮。

在我的UITableViewCell子类中,我覆盖了setEditing:animated:,如下所示:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    if (editing) {
        CGFloat buttonWidth = _editButton.frame.size.width;
        [UIView animateWithDuration:0.3
                              delay:0.0 options:UIViewAnimationOptionCurveEaseInOut
                         animations: ^{
                             [_shareButtonXConst setConstant:buttonWidth * -3.0];
                             [self layoutIfNeeded];
                         }
                         completion:nil];
    } else {
        [UIView animateWithDuration:0.3
                              delay:0.0 options:UIViewAnimationOptionCurveEaseInOut
                         animations: ^{
                             [_shareButtonXConst setConstant:0.0];
                             [self layoutIfNeeded];
                         }
                         completion:nil];
    }
}

在我的UIViewController中,我有:

- (void)loadView
{
    // ...

    UITableView *tableView = [[UITableView alloc] init];
    _tableView = tableView;
    [_tableView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [_tableView setBackgroundColor:[UIColor clearColor]];
    [_tableView setRowHeight:80.0];
    [_tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
    [_tableView setDelegate:self];
    [_tableView setDataSource:self];

    // ...
}

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    return YES;
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{

}

- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath
{
    return NO;
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewCellEditingStyleDelete;
}

我对此进行了修改,并且在刷卡时无法保持删除按钮不显示。还有其他人遇到过这个问题吗?谢谢!

1 个答案:

答案 0 :(得分:2)

如果您不想要删除按钮,则应在UITableViewCellEditingStyleNone数据源方法中返回editingStyleForRow...