1

在此处输入图像描述我想刷新 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; 
}
4

1 回答 1

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 中删除对象,您所做的是在重新加载之后。

它可能会帮助你。

于 2013-08-09T05:55:07.507 回答