使用 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 视图重新加载。
我有 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]
非常感谢您的帮助
在 table 视图上为相应部分调用 headerViewForSection:
以获取您之前返回的视图,然后直接更新其内容。
这是一种直接更新单元格内容的类似方法,而不是在更改仅与正在更新的项目相关(而不是添加或删除)时要求 table 视图重新加载。