查看this video。
运行此代码时出现这个问题:
[NSFetchedResultsController deleteCacheWithName:@"Root"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"following == YES"];
[self.fetchedResultsController.fetchRequest setPredicate:predicate];
[self.fetchedResultsController performFetch:nil];
[self.tableView beginUpdates];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:THE_SECTION_WITH_THE_BLOGS] withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView endUpdates];
为什么我重新加载的部分下方的部分标题会像这样改变它的框架?任何解决方案?
编辑:
这是我的viewForHeaderInSection:
(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
if (tableView != self.tableView)
return nil;
BLMenuTableSectionHeaderView *view = nil;
if (section != BLMenuSectionUser) {
view = [[BLMenuTableSectionHeaderView alloc] initWithFrame:CGRectZero];
if (section == BLMenuSectionFollowing){
if ([self blogCount] > 0){
[view setTitle:NSLocalizedString(@"Following", nil)];
[view addSubview:self.editButton];
}else{
self.tableView.editing = NO;
}
}
if (section == BLMenuSectionPosts){
[view setTitle:NSLocalizedString(@"Browse", nil)];
}
else if (section == BLMenuSectionSettings)
[view setTitle:NSLocalizedString(@"Settings", nil)];
}
return view;
}
答案 0 :(得分:0)
Afaik,您不应将-beginUpdates
和-endUpdates
与重新加载结合使用,而应使用when inserting or deleting。
不确定这是否会导致您的问题,但可能值得一试。
无论动画类型如何都一样吗?
来自Apple's docs:
如果您想要后续插入,删除和,请调用此方法 选择操作(例如,cellForRowAtIndexPath:和 indexPathsForVisibleRows)同时进行动画处理。这一组 方法必须以调用endUpdates结束。这些方法 对可以嵌套。如果您不进行插入,删除和 选择调用此块内部,表属性如行计数 可能会变得无效。 您不应该在组内调用reloadData; 如果您在组内调用此方法,则需要执行任何操作 自己制作动画。