使用 NSFetchedResultsController 的自定义 TableView 部分 headers

Custom TableView section headers with NSFetchedResultsController

我有 table 查看部分 header,其中显示有关该部分中包含的 object 的摘要信息(特定 属性 的总计)。

当用户通过在 table 单元格上滑动删除 object 时,我从模型中删除了 object 并且 FetchedResultsController 从 table 视图中删除了该单元格通过其代表。

删除 object:

    NSManagedObject *mo = [self.fetchedResultsController objectAtIndexPath:indexPath];
    [self.context performBlockAndWait:^{
        [self.context deleteObject:mo];
        [[APDatabase database] saveContext];
    }];

作为响应,FRC 调用它的委托,我为正在移除的单元格设置动画。

- (void)controller:(NSFetchedResultsController *)controller
   didChangeObject:(id)anObject
       atIndexPath:(NSIndexPath *)indexPath
     forChangeType:(NSFetchedResultsChangeType)type
      newIndexPath:(NSIndexPath *)newIndexPath
{ ...

            case NSFetchedResultsChangeDelete:
                [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
                break;
... }

问题是 header 部分中的总数现在已经更改,但 header 部分仍然显示旧总数。我不能调用 [tableView reloadData],因为那样会停止正在删除的单元格的动画。

如何在 object 被删除后更新 header 部分的总计?

第 header 部分是使用

创建的
-(UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

并使用 [theSection objects]

完成该部分中包含的 object

非常感谢您的帮助

在 table 视图上为相应部分调用 headerViewForSection: 以获取您之前返回的视图,然后直接更新其内容。

这是一种直接更新单元格内容的类似方法,而不是在更改仅与正在更新的项目相关(而不是添加或删除)时要求 table 视图重新加载。