我有一个计算卡路里的应用程序。用户输入他们的卡路里(每一小块食物都变成了TableView中的一行。每个部分代表一天。
我有一个部分标题,它添加了当天的所有卡路里。
现在我有了一年的输入,加载应用程序的性能很慢(大约需要5秒)。我使用仪器,负责的方法是titleForHeaderInSection。我发现的问题是,当加载表视图时(不仅仅是显示的部分),每个单独的部分都会调用此方法。
有什么办法可以绕过这个问题吗?我热衷于显示每天的总数。
发布于 2016-09-30 05:28:44
如果你对标题的计算有点“昂贵”,那么你需要一种推迟计算的方法。没有好的方法来知道何时调用titleForHeaderInSection来真正显示标题,以及何时仅仅为了设置表视图而调用它。
一种解决方案是用viewForHeaderInSection和heightForHeaderInSection取代titleForHeaderInSection。
诀窍是只有在标题视图实际添加到表视图中时才设置标题视图的文本。这可以在自定义header视图类的willMove(toSuperview:)方法中完成。如果superview为非空,则该视图将被添加到其父视图中。您需要一种方法来使用该方法来实际计算标题的文本。
正如评论中指出的,另一种可能的解决方案是只计算一次每天的总和并存储该值。然后,当在表视图中加载数据时,您不需要进行任何计算。只需使用预定值。
https://stackoverflow.com/questions/39780189
复制相似问题