2016-09-29 39 views
0

由於緩慢的iOS性能我有一個計算卡路里的應用程序。用戶輸入他們的卡路里(食物的每一位成爲一個TableView中一排,每部分代表一天。由於titleForHeaderInSection

我有一個節頭,增加了所有的卡路里的那一天。

現在我有一個年價值的輸入表現加載應用程序的速度很慢(大約需要5秒)我使用的儀器和負責的方法是titleForHeaderInSection。我發現這個問題是當tableview加載時調用每個單獨的部分(不只是部分顯示)

有沒有辦法解決這個問題?我熱衷於顯示每日總數。

+2

你在做什麼代碼?我猜你正在計算每日總數。爲什麼不計算每天的數據更改時的每日總數,並將其存儲在數據庫中,而不是每次計算。 – Paulw11

+0

除了準備視圖並返回它們之外,您不應該在UITableView數據源方法中執行任何操作。任何計算應該在之前或異步執行。 – EmilioPelaez

+0

這個問題與Xcode無關。無需繼續添加該標籤。 – rmaddy

回答

0

如果您對標題的計算有點「貴」,那麼您需要一種推遲計算的方法。沒有什麼好的方法可以知道何時調用titleForHeaderInSection來真正顯示標題以及何時調用它來設置表視圖。

一種解決方案是將titleForHeaderInSection的使用替換爲viewForHeaderInSectionheightForHeaderInSection

訣竅是僅當標題視圖實際添加到表視圖時才設置標題視圖的文本。這可以在自定義標題視圖類的willMove(toSuperview:)方法中完成。如果superview不是零,那麼視圖將被添加到其父視圖。您需要一種方法來使用該方法來實際執行標題文本的計算。

正如評論中指出的那樣,另一種可能的解決方案是計算每一天的總和一次並存儲該值。然後,當在表格視圖中加載數據時,您不需要進行任何計算。只需使用預定值即可。