2012-09-04 69 views
0

例如,在tableView中有100行,heightForRowAtIndexPath:已在第100行顯示之前執行。heightForRowAtIndexPath:在顯示單元格之前執行?

爲什麼?爲了計算tableView的contentSize

謝謝!

+0

問題不清楚..也許一些相關的代碼會有所幫助。 – Bourne

+0

是的,它將在**單元格顯示之前調用**。您必須將單元格的高度提供給「UITableView」,並且可以使用它來調整「UITableViewCell」的大小。它只需要可見的細胞。不管你的數據庫有多大,如果屏幕上只有5個單元格,它只會被調用5次。 – holex

回答

3

Apple's documentation

每次顯示錶視圖時,它調用的tableView:heightForRowAtIndexPath:對委託其各行的

所以,是的,這就是所謂的顯示之前細胞。如果你考慮一下,如果表格反過來,它會創建一個標準高度的單元格,將內容放入它,獲得真實高度,並調整/移動單元格。那不會很好。

這可能會導致性能問題,所以如果你有不同高度的細胞,你應該只使用它:

該方法允許委託具有不同的高度指定行。如果實現此方法,則它返回的值將覆蓋爲給定行的UITableView的rowHeight屬性指定的值。

使用tableView:heightForRowAtIndexPath:而不是rowHeight屬性會影響性能。 每次顯示錶格視圖時,都會在代理中爲其每行調用tableView:heightForRowAtIndexPath:,這可能會導致具有大量行(大約1000或更多)的表視圖出現嚴重的性能問題。

否則,如果所有的細胞都具有相同的高度,使用rowHeight財產,並沒有實現tableView:heightForRowAtIndexPath:

相關問題