UITableView 删除最后一行 奔溃错误处理方法

在iOS开发中有时候需要 有滑动Tablecell 点击出现 删除按钮 删除 Tablecell  通常我们会这样操作

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

{

    

   if (editingStyle == UITableViewCellEditingStyleDelete)

   {

     //清理本地数据

     [self.recentSessions removeObjectAtIndex:indexPath.row];

    

     [_notifiTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

   }


}  



在 数据中有多个数据项时 删除是没有问题的,当删除到最后一项时就会出现崩溃现象 崩溃信息为

*** Assertion failure in - [UITableView _endCellAnimationsWithContext:]

这是因为 tableView 是分组的,删除最后一个分组中最后一个cell 和数据源时 也要对  session 进行操作


正确的处理方法为


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

{

    

   if (editingStyle == UITableViewCellEditingStyleDelete)

   {

     //清理本地数据

     [self.recentSessions removeObjectAtIndex:indexPath.row];

    

    [_notifiTableView beginUpdates];

    if (self.recentSessions.count == 0)

    {

        [_notifiTableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationLeft];

    }

    [_notifiTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

    [_notifiTableView endUpdates];

   }


}



你可能感兴趣的:(ios,移动,UITableViewCell,ios开发,UITableView)