2010-01-22 27 views
2

我需要訪問表格中的單元格tableView:heightForRowAtIndexPath: ,因爲我想使用數據,我已經將custome單元格用於高度計算。 我發現獲取細胞的唯一方法是致電tableView:cellForRowAtIndexPath:需要訪問tableView中的單元格:heightForRowAtIndexPath:

問題在於調用tableView:cellForRowAtIndexPath:實際上是在創建細胞,而不是與它們無關。當需要使用同一個單元格進行繪圖時,將再次創建該單元格。因此,對於相同的索引,單元格被創建兩次。

所以我想知道是否有更有效的方法來做到這一點。 感謝您的幫助。

回答

6

您無法訪問此方法中的單元格,因爲它尚不存在。在tableView:cellForRowAtIndexPath:中創建單元格之前調用tableView:heightForRowAtIndexPath:

但它不應該因爲你不應該在細胞對象中保存模型信息。單元格只是視圖,您應該始終保存模型中構建單元格所需的所有數據。

+0

這是一種崇高的想法,但如果您需要使用layoutSubviews以合適的格式佈局單元格,則它不起作用。在這種情況下,可以根據生成的單元格內容動態調整單元格的高度。如果你知道你的單元格的寬度,這仍然可以解決,但如果它也是可變的呢?我遇到了這個問題,我還沒有找到解決方案。任何人? – JoBu1324 2010-08-31 22:08:41

+4

沒有辦法繞過它:使用UITableView,您需要在單元格創建之前知道單元格高度。 – 2010-08-31 23:00:12

+0

我不認爲這是真的。我注意到tableView:heightFOrRowAtIndexPath:在layoutSubviews之後的*和*之前被調用。我遇到的問題是第一次嘗試獲取單元格高度時的崩潰; tableView:cellForRowAtIndexPath:導致崩潰。我試圖把這個消息放在try/catch塊中,但它沒有任何好處。 – JoBu1324 2010-08-31 23:50:51

0

通常,根據您的數據和索引路徑選擇要從tableView:cellForRowAtIndexPath:返回的單元格。
因此,您可以使用相同的數據和索引路徑來確定要在tableView:heightForRowAtIndexPath:中返回哪個單元高度。

相關問題