2016-07-07 75 views
0

我是Objective-C的新手。因此,我在表格(5个单元格)中有5行的表格视图,我想让用户删除它们,但是当我点击删除按钮时,应用程序不断崩溃。它崩溃的原因是因为我有5行的部分,而不是返回[self.myListItems计数]如何纠正下面的代码,同时保持5行的部分?如何删除tableView单元格iOS

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
     // Delete the row from the data source 


     [self.myListItems removeObjectAtIndex:indexPath.row]; 
     [self saveList]; 

     [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
    } 
} 

的错误是:在断言失败 - [UITableView的_endCellAnimationsWithContext:]

+0

你重装的TableView一个单元已被删除后?顺便说一句,为什么你要保留5行,即使你删除一个单元格,这应该减少行数? – DCDC

+0

你的意思是你在'numberOfRowsInSection'中返回静态5吗? –

+0

http://stackoverflow.com/questions/10134841/assertion-failure-in-uitableview-endcellanimationswithcontext –

回答

0

尝试使用这些:

[self.myListItems removeObjectAtIndex:indexPath.row]; 

[tableView beginUpdate]; 
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
[tableView endUpdate]; 

[self saveList]; 
3

在viewDidLoad中:

self.tableView.allowsMultipleSelectionDuringEditing = NO; 

而且

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Return YES if you want the specified item to be editable. 
    return YES; 
} 

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
     //add code here for when you hit delete 
     [self.myListItems removeObjectAtIndex:indexPath.row]; 
     [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; 
     [self saveList]; 
    }  
} 

记住 - 如果您想删除某一部分中最后一项的行,则需要删除整个部分(否则可能会导致部分计数错误并引发此异常)。

希望这会有所帮助。

0

变化以下行

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if (editingStyle == UITableViewCellEditingStyleDelete) { 
// Delete the row from the data source 
[tableView beginUpdates] 
[self.myListItems removeObjectAtIndex:indexPath.row]; 
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
[tableView endUpdate]; 
[self saveList]; 
} 
相关问题