2010-10-13 69 views
2

我的tableView由5-10個單元格組成,每個單元格包含圖像的滾動視圖。問題是,當一個單元格離開屏幕時,它將刪除所有圖像,然後在單元格返回到屏幕上時重新加載它們。我知道這是出於性能原因,但在這種情況下,它看起來很糟糕。有沒有辦法阻止細胞脫離屏幕時卸載?UITableView - 當他們離開屏幕時不要卸載單元格

回答

5

是的,當然。一般策略是自己預先加載所有對象。您可以在viewDidLoad中執行此操作,並將它們卸載到viewDidUnload中,將它們存儲在NSMutableArray中,然後在您的tableView:cellForRowAtIndexPath:實現中引用陣列中的相應索引。

+0

好的,將來看看這個。 – sol 2010-10-14 00:33:11

+0

@sol注意內存使用情況;如果預加載所有單元格導致需要過多的內存,則您的應用程序可能會出現問題。請務必在更改之前和之後使用樂器測量應用程序的內存使用情況,以確保您的內存佔用合理。 – 2010-10-14 01:15:29

0

你應該有一個很好的理由不採取蘋果的方式。用5-10個電池,聽起來不像你有一個很好的理由。也許你可以改善在NSOperationQueue中使用後臺線程的單元格加載。

這篇文章可能會有所幫助:

https://stackoverflow.com/questions/1408997/dynamic-uiimage-content-loading-in-uitableview-code

+0

好吧,設想一個高度爲200px的行,在iPad上的屏幕上有10個圖像。當該行幾乎沒有離開屏幕底部時,它看起來很荒謬,所有圖像消失,然後當該行在屏幕上移回時(它們從服務器重新加載)重新出現。 – sol 2010-10-14 00:23:37

+0

'NSOperationQueue'(單數)不適合工作,在這裏 – 2010-10-14 01:14:21

+1

在這裏緩存圖像聽起來很明智。 – 2010-10-14 01:19:50

0

感謝的補充解釋。這非常有幫助。通過基於uitaleview單元的高度計算uitableview的高度,您可能可以避免出現問題,而不會禁用可重用單元。另外,如果您正在從網絡重新加載單元格,您肯定會從某些緩存中受益,如前所述。

相關問題