UITableview单元格删除。但是deosn不会重新加载细胞

时间:2013-08-09 05:27:11

标签: ios

enter image description here我想刷新tagListTableView。

但它没有刷新。

点击UITableview单元格上的删除按钮时,可以删除coraData日期中的对象。

但是,删除表格视图中的单元格仍然会在屏幕上显示为空白。

我试图在viewWillAppear,viewDidAppear,.....更多的[tagListTableView reloadData]。

我错过了什么?

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewCellEditingStyleDelete; 
}

- (void)tableView:(UITableView *)tableView 
          commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
          forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        Voca_Tag *tag = (Voca_Tag *)[self.fetchedResultsController objectAtIndexPath:indexPath];
        UITableViewCell *cell = [tagListTableView cellForRowAtIndexPath:indexPath];
        [cell setSelected:NO animated:YES];

        [tag.managedObjectContext deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]]; //        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; 
        [tagListTableView reloadData];

        [pickedTags removeObject:tag];
        cell.accessoryType = UITableViewCellAccessoryNone;

        NSError *error = nil;
        if (![tag.managedObjectContext save:&error]) {
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            abort();
        }
    } 
}

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

1 个答案:

答案 0 :(得分:0)

if (editingStyle == UITableViewCellEditingStyleDelete) {
        Voca_Tag *tag = (Voca_Tag *)[self.fetchedResultsController objectAtIndexPath:indexPath];
        UITableViewCell *cell = [tagListTableView cellForRowAtIndexPath:indexPath];
        [cell setSelected:NO animated:YES];

        [tag.managedObjectContext deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]]; //        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; 


        //********
        //REMOVE the object before reloading the table
        [pickedTags removeObject:tag];

        [tagListTableView reloadData];


        cell.accessoryType = UITableViewCellAccessoryNone;

        NSError *error = nil;
        if (![tag.managedObjectContext save:&error]) {
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            abort();
        }
    } 

在重新加载tableview之前,你应该从你的pickTags中删除对象,你在重新加载后就是这样做了。

它可能对你有帮助。