UITableView分组页脚在重新加载后未更新

我在我的分组UITableView中有3或2个部分(取决于数据源)。 我想通过以下方式重新加载最后一部分:

dispatch_async(dispatch_get_main_queue(), ^{ [UIView performWithoutAnimation:^{ [feedDetailTB reloadSections:[NSIndexSet indexSetWithIndex:feedDetailTB.numberOfSections-1] withRowAnimation:UITableViewRowAnimationNone]; }]; }); 

在此处输入图像描述

首先,页脚永远不会消失。 数据源基本上跟踪是否有更多注释(简单加载更多function)。 在viewForFooterInSection我只是在加载了所有注释后return nil

但是,正如您在GIF中看到的那样,首先loading按钮停留在那里。 它甚至可以访问和工作。 当我向上滚动时,它会消失,人们可以在底部看到它,这是正确的。 但是在重新加载所有评论后,它应该消失,但遗憾的是它仍然存在。

如果我使用reloadData它工作正常。 但我不能使用它,因为我有其他部分,我不需要重新加载。

其次,即使我使用了UITableViewRowAnimationNone ,行项也会出现奇怪的动画/闪烁。 在GIF中不可见

你应该根据你的逻辑实现“isTheLastSection”

 - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { if (isTheLastSection) { return 40; } return 0; } 

要向节添加新行,必须使用insertRowsAtIndexPaths而不是仅将新对象添加到数据源并重新加载节。

这是代码:

 NSMutableArray *newCommentsIndexPath = [[NSMutableArray alloc] init]; for (NSInteger i = currentCount; i < (_postDetailDatasource.commentsFeedInfo.allCommentsArray.count + serverComments.count); i ++) { NSIndexPath *idxPath = [NSIndexPath indexPathForRow:i inSection:sectionNumber]; [newCommentsIndexPath addObject:idxPath]; } [_postDetailDatasource.commentsFeedInfo.allCommentsArray addObjectsFromArray:serverComments]; [feedDetailTB beginUpdates]; [feedDetailTB insertRowsAtIndexPaths:newCommentsIndexPath withRowAnimation:UITableViewRowAnimationFade]; [feedDetailTB endUpdates];