我有几个带有重写- (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;
}
我对此进行了修改,并且在刷卡时无法保持删除按钮不显示。还有其他人遇到过这个问题吗?谢谢!
答案 0 :(得分:2)
如果您不想要删除按钮,则应在UITableViewCellEditingStyleNone
数据源方法中返回editingStyleForRow...
。