【问题标题】:UITableView grouped section footer not updating after reloadUITableView 分组节页脚在重新加载后不更新
【发布时间】:2018-03-13 21:27:05
【问题描述】:

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

dispatch_async(dispatch_get_main_queue(), ^{

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

首先,页脚永远不会消失。数据源基本上会跟踪是否有更多的 cmets(一个简单的加载更多功能)。在viewForFooterInSection我只是return nil,当所有的cmets都已经加载完毕。

但是,正如您在 GIF 中看到的那样,一开始loading 按钮会停留在那里。它甚至可以访问并且有效。当我向上滚动时,它消失了,可以在底部看到它,这是正确的。但是在重新加载所有 cmets 后,它应该会消失,但遗憾的是它仍然存在。

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

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

【问题讨论】:

  • “查看旧 cmets”是页脚视图?看起来您正在用“加载”替换它的文本。您能否使用显示“查看旧 cmets”的代码更新帖子
  • @SantosRamón 这是一个页脚视图,是的,我正在更新它的文本。但问题是 reloadSections 不调用页脚视图,因此页脚没有使用适当的数据源重新加载
  • 你需要重新处理这个问题。本质上,您是在要求我们解决问题,而我们不知道您做了什么。看起来您错误地更新了 tableview,但如果没有代码和更多细节,人们永远不会知道。

标签: ios objective-c uitableview


【解决方案1】:

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

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

【讨论】:

  • 我已经有一张支票了。无论如何,我不需要“加载更多”按钮在最后一部分消失。当没有更多待处理的 cmets 时,我希望它在最后一部分消失。为此,我有一个变量,它会跟踪这一点。
【解决方案2】:

为了向节添加新行,您必须使用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];

【讨论】:

    猜你喜欢
    • 2011-08-21
    • 1970-01-01
    • 2022-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 2011-04-08
    • 1970-01-01
    相关资源
    最近更新 更多