我有几个UITableViewCell子类,这些子类具有覆盖的- (void)setEditing:(BOOL)editing animated:(BOOL)animated方法。在我的实现中,当单元被滑动时,我有动画来显示和隐藏自定义视图。在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;
}

我已经对此进行了很多修改,并且在我滑动时无法使删除按钮不出现。还有其他人遇到这个问题吗?谢谢!

最佳答案

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

07-26 09:33