我正在尝试删除这样的UITableViewCell:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete)
{
[self._tableViewItems beginUpdates];
[self._tableViewItems deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
[self._tableViewItems endUpdates];
[[AppDelegate appDelegate].managedObjectContext deleteObject:[_arraySortedItems objectAtIndex:indexPath.row]];
NSError *error = nil;
[[AppDelegate appDelegate].managedObjectContext save:&error];
}
[self getItems];
}
这是getItems:
-(void)getItems
{
_arrayAllItems = NULL;
_arrayAllItems = [[NSMutableArray alloc]initWithArray:[[AppDelegate appDelegate]getItems]];
_arraySortedItems = NULL;
_arraySortedItems = [[NSMutableArray alloc]initWithArray:_arrayAllItems];
[_tableViewItems reloadData];
[_tableViewItems setNeedsLayout];
}
但是这段代码在[self._tableViewItems endUpdates]失败了;除了这个例外:
Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit/UIKit-2903.23/UITableView.m:1330
搜索网络,但没有任何解决方案可以帮助我。
感谢您的帮助
答案 0 :(得分:1)
您只需创建一个主详细信息项目即可获得此演示参考。它已经在那里可用了。或者你可以试试这个。
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
return YES;
}
if (editingStyle == UITableViewCellEditingStyleDelete) {
[_objects removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
如果有效,请告诉我。
答案 1 :(得分:0)
尝试翻转它 - 我认为您需要在删除行之前删除该对象。否则,在删除行之后,单元格的数量与UITableView认为应该是的不匹配。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete)
{
[[AppDelegate appDelegate].managedObjectContext deleteObject:[_arraySortedItems objectAtIndex:indexPath.row]];
NSError *error = nil;
[[AppDelegate appDelegate].managedObjectContext save:&error];
[self._tableViewItems beginUpdates];
[self._tableViewItems deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
[self._tableViewItems endUpdates];
}