5

如果我使用自定義UITableViewCell,是否需要設置heightForRowAtIndexPath?在我的NIB中,我已經設置了單元格高度。如果我使用自定義的UITableViewCell,是否需要設置heightForRowAtIndexPath?

當我覆蓋heightForRowAtIndexPath時,雖然將單元格的內容設置爲在NIB中定義的高度,但不顯示單元格的內容。

如果我不搭配heightForRowAtIndexPath單元格的內容出現,但由於默認高度不夠大,所以出現溢出。

回答

12

如果您所有的行都是相同的高度,那麼您可以設置UITableViewrowHeight屬性,而不是實施tableView:heightForRowAtIndexPath:。如果你有不同高度的行,那麼你必須實現tableView:heightForRowAtIndexPath:

這兩種方法都不會自動返回您在NIB中定義的單元格的高度,因爲它們在tableView:cellForRowAtIndexPath:開始構建單元格之前被調用。

要使用您的NIB中定義的單元格的高度,我建議您定義一個名爲prototypeCell的控制器的自定義屬性,該屬性將包含永遠不會顯示在您的表上的單個單元格。在tableView:heightForRowAtIndexPath:中,檢查prototypeCell是否爲零。如果是,則從您的NIB初始化它。然後返回prototypeCell.frame.size.height

+2

+1原型設計模式的大量使用! – 2011-11-09 00:53:38

+0

你是如何初始化prototypeCell的?你正在使用'initWithStyle:reuseIdentifier:'?如果我使用它,那麼'prototypeCell.frame.size.height'返回默認高度(44),而不是xib中定義的高度。 – kraftydevil 2013-07-12 06:35:17

+0

筆尖負載可以爲您初始化它,並將包括正確的高度。您可以註冊單元格的筆尖,或將原型單元格映射到控制器的xib中的IBOutlet。 – 2013-07-15 12:30:25

相關問題