2011-04-23 69 views
2

我在cellForRowAtIndex函數中創建自定義單元格,並使用我的動態文本填充它。單元格的高度根據這個文本是可變的,所以我需要使用heightForRowAt函數,但是在那個函數中我沒有這個單元格。我可以創建一個新的文本,然後用文本填充它,然後調用我的calculateHeight函數,但是然後爲每行創建2個單元格。iPhone - 自定義TableViewCell高度計算單元格文本

任何人都有更好的方法?按行索引自行緩存單元格中的cellForRow函數並使用它?在formatForRow之前調用cellForRow?

到目前爲止,我已經設法讓Xcode4崩潰了兩次,所以我希望有人已經這樣做了。

回答

1
tableView:heightForRowAtIndexPath: 

調用之前

tableView:cellForRowAtIndexPath: 

創建兩個單元是一個可能的解決方案,但創建兩個小區是不是一個非常有效的方法。但是,您不需要單元格來計算高度;所有你需要的是字符串。

您可能需要使用

sizeWithFont:constrainedToSize: 

在您的字符串來計算高度。

我可以提供有關如何做到這一點的詳細信息,但您應該能夠通過閱讀文檔來弄清楚。

+0

這就是我所做的,但然後細胞高度計算功能在我的視圖控制器。不是一個大問題,但現在我必須粘貼更多的代碼才能包含我的自定義單元格 – Mark 2011-04-23 18:48:20

+0

@Mark然後你在錯誤的地方做正確的事情。它應該是自定義單元的類方法,而不是控制器的實例方法。 – 2011-04-24 11:24:54

+0

因爲我不能在當前由於崩潰錯誤而在heightForRowAt ..函數中調用cellForRowAt ..我重複在高度函數中創建單元格,而不是調用cell.calculateHeight,該函數根據字符串計算其自身高度以及它們的佈局方式。 – Mark 2011-05-14 20:24:57

1

你所做的是你在你的自定義單元格上做出一個類方法(例如),它知道如何設置事物(靜態大小的東西)的值,並做一些數學運算來確定文本的偏移量例如,它可以告訴你在計算字符串有多高時,單元格需要多大。

相關問題