我有几个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...
。