当我将UITableView置于编辑模式时,我一直试图阻止显示(-)删除指示器。
为清楚起见进行的更新:
该表如下所示:
这是我在-(NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath中设置的
点击重新排序时,我进入编辑模式。我不希望这些显示:
我通过将editActionsForRowAtIndexPath中显示的按钮限制为仅删除来解决了第三张屏幕截图,但是我什至不想进入这一部分。我希望编辑模式只能重新排序
/更新
我试过设置UITableViewCell.shouldIndentWhileEditing = NO
在单元上直接:
cell.indentationLevel = -3;
cell.shouldIndentWhileEditing = NO;
在界面构建器中
在适当的委托方法中
- (BOOL)tableView:(UITableView *)tableview shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"shouldIndentWhileEditingRowAtIndexPath");
return NO;
}
我还将在动作列表中显示项目。在编辑模式下,我根本没有计划删除任何内容,只是重新编排。我已经进行了一些调整,因此仅在用户滑动时才显示删除,但我希望(-)根本不显示:
- (void) endEditing
{
self.editMode = NO;
self.editControlButton.title = @"Reorder";
[self setEditing:NO animated:YES];
//[self.tableView reloadData];
}
- (void) startEditing
{
self.editMode = YES;
self.editControlButton.title = @"Done";
[self.tableView setEditing:YES animated:YES];
}
#pragma - mark UITableViewDelegate
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleDelete;
}
- (BOOL)tableView:(UITableView *)tableview shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"shouldIndentWhileEditingRowAtIndexPath");
return NO;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
TCORead *item = [self.fetchedResultsControllerDataSource selectedItem];
manager.currentRead = item;
}
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Delete" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){
[self.tableView setEditing:NO];
}];
//workaround, rdar://17969970
//normally don't want to be able to get into this menu when reordering
if (!self.editMode) {
UITableViewRowAction *shareAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"Share" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){
[self.tableView setEditing:NO];
}];
shareAction.backgroundColor = [UIColor grayColor];
UITableViewRowAction *doneAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Done" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){
[self.tableView setEditing:NO];
}];
doneAction.backgroundColor = [UIColor greenColor];
[self startEditing];
return @[deleteAction, doneAction, shareAction];
}
return @[deleteAction];
}
- (void)tableView:(UITableView *)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath
{
[self endEditing];
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
//empty on purpose
}
最佳答案
我强迫删除指示器出现。 Vanyas有一个示例项目,向我展示了我做错了什么。
我的editingStyleForRowAtIndexPath方法需要如下所示:
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath: (NSIndexPath *)indexPath
{
//return UITableViewCellEditingStyleDelete;
return tableView.isEditing ? UITableViewCellEditingStyleNone: UITableViewCellEditingStyleDelete;
}
关于ios - UITableViewCell不尊重shouldIndentWhileEditing = NO?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25222872/