2011-08-14 14 views
0

ウェブからのJSONデータを表示するテーブルがあります。私は、異なる細胞で表現された私のデータに異なるタイプの要素を持っています。基本的には、すべてのセルタイプに対してサブクラス化はしませんでしたが、setObject/layoutSubviews/rowHeightForObject/etcメソッドでswitch/caseステートメントを実行しました。今私の問題は、特定のセルにはテキストのサイズに応じて異なるUILabelが含まれているということです。私が今やっていることは、毎回、ラベルをrowHeightForObjectメソッドで作成し、その特定のセルの高さを決定するためにサイズを計算することです。これを行うより効率的な方法はありますか?カスタムセル(高さが異なる)を使用した3つのテーブルビュー

+0

UILabelをインスタンス化せずにサイズを取得する方法については、http://stackoverflow.com/questions/446405/adjust-uilabel-height-depending-on-the-text/447065#447065を参照してください。 –

答えて

0

TTStyledTextTableCellセルを使用できます。 TTTwitterのサンプルプロジェクトにはその良い例があります。 TTStyledTextTableCellはTTStyledTextのセル項目を受け入れ、セルの高さを自動的に調整します。

カスタムセルクラスを使用している場合は、セルクラスにheight関数を追加し、UILabelの代わりにTTStyledTextを使用する必要があります。

/////////////////////////////////////////////////////////////////////////////////////////////////// 
+ (CGFloat)tableView:(UITableView*)tableView rowHeightForObject:(id)object { 
    TTStyledText* text = object; 
    if (!text.font) { 
    text.font = TTSTYLEVAR(font); 
    } 
    text.width = tableView.width - [tableView tableCellMargin]*2; 
    return text.height; 
} 

この関数は、テーブルデータソース内の各セルの高さをTTStyledTextクラスで計算します。

関連する問題