titleForHeaderInSection

titleForHeaderInSection

我有一个计算卡路里的应用程序。用户输入他们的卡路里(TableView中的每一点食物都变成一行。每个部分代表一天。

我有一个小节标题,可以添加当天的所有卡路里。

现在,我有多年的投入,加载应用程序的性能很慢(大约需要5秒钟)。我使用了仪器,负责的方法是titleForHeaderInSection。我发现的问题是,在加载表视图时,每个单独的部分都会调用此方法(而不仅仅是显示的部分)。

反正有解决这个问题的方法吗?我很想显示每日总数。

最佳答案

如果您对标题的计算有点“昂贵”,那么您需要一种方法来推迟该计算。没有什么好方法可以知道何时调用titleForHeaderInSection来真正显示标题,以及何时调用它只是为了设置表视图。

一种解决方案是将titleForHeaderInSection的使用替换为viewForHeaderInSectionheightForHeaderInSection

诀窍是仅在将标题视图实际添加到表视图时设置标题视图的文本。这可以在自定义标头视图类的willMove(toSuperview:)方法中完成。如果超级视图为非nil,则将该视图添加到其父视图。您将需要一种使用该方法来实际计算标题文本的方法。

正如评论中指出的那样,另一种可能的解决方案是只计算一次每天的总数并存储该值。然后,在将数据加载到表视图中时,无需进行任何计算。只需使用预定值即可。

关于ios - 由于titleForHeaderInSection导致iOS性能下降,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39780189/

10-11 18:46