分组的UITableview不可编辑单元格缩进

时间:2014-03-26 10:19:27

标签: ios objective-c uitableview

我正在使用包含编辑/删除功能的分组部分UITableView之一的应用程序。 Tableview看起来像这个Grouped UITableView

-(IBAction) EditTable:(id)sender 
   {
    if (self.editing)
    {
      [super setEditing:NO animated:NO];
      [libtable setEditing:NO animated:NO];
      [libtable reloadData];
          [tabledit setTitle:@"Edit" forState:UIControlStateNormal];
        }
    else
    {
        [super setEditing:YES animated:YES];
        [libtable setEditing:YES animated:YES];
        [libtable reloadData];
        [tabledit setTitle:@"Done" forState:UIControlStateNormal];
    }}

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

    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
          [self delete];
    }
}

在每个部分的第一行,我已使用此方法禁用编辑模式:

-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    return indexPath.row > 0;}

工作正常,但你可以在这张图片中看到:

TAblevie in edit mode

当我点击编辑模式时,由于不可编辑模式,每个部分的第一行不会移动到右侧。我需要这些0索引行也在右侧点击编辑按钮,就像其他行一样。我找不到任何方法来解决这个问题。如果有人对这个概念有所了解,请帮助我。

提前致谢。

2 个答案:

答案 0 :(得分:2)

尝试以下

  - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
   {

     if(indexPath.row == 0) //for each section of first row return UITableViewCellEditingStyleNone
          return UITableViewCellEditingStyleNone;

     return UITableViewCellEditingStyleDelete;


  }

我忘了看你的-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath

  //you may comment this method
 -(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
   {
       return YES; //return for every cell as editable 
   }

如果你跑步并且处于编辑模式,你会得到这样的

enter image description here

答案 1 :(得分:1)

尝试使用下面的委托方法来决定单元格的编辑样式

-(UITableViewCellEditingStyle)tableView:(UITableView*)tableView editingStyleForRowAtIndexPath:(NSIndexPath*)indexPath {

        if(indexPath.row ==0 ){
         return UITableViewCellEditingStyleNone;
         }else{
           return UITableViewCellEditingStyleInsert;

           }
    }

并将您的方法canEditRowAtIndexPath更改为=>

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