2012-02-20 3 views
0

私はカスタムテーブルビューセルを持つテーブルビューを持っています。その高さは、セルに表示されるテキストの量に依存します。ここでUITableViewDelegate法heightForRowAtIndexPathのための私のコードは次のとおりです。UITableViewDelegateメソッドのテーブルビューのセルプロパティを取得するheightForRowAtIndexPath:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSInteger row = [indexPath row]; 

    NSDictionary *factor = [self.factorsArray objectAtIndex:row]; 

    CGSize maximumLabelSize = CGSizeMake(260, kMaximumFactorLabelHeight); 
    CGSize labelSize = [[factor objectForKey:@"text"] sizeWithFont:[UIFont fontWithName:@"Arial-BoldMT" size:14.0] 
           constrainedToSize:maximumLabelSize 
            lineBreakMode:UILineBreakModeWordWrap]; 

    return (labelSize.height + 72); 
} 

このコードは完璧に動作します。私の問題は、物事の数は、ここでハードコードされていることである。

  • テーブルビューセル内のラベルの幅
  • フォント名
  • フォントサイズの余分である
  • 「72」高さは、ラベルの高さに加えてセルに追加する必要があります。

この情報はすべて、カスタムテーブルビューセルを含むxibファイルから取得できます。しかし、私はそれをheightForRowAtIndexPathでどうやって得るのですか?私はしようとしました - (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPathしかし、クラッシュを取得していた、私は信じて、セルがまだ存在しないので、heightForRowAtIndexPathメソッドが呼び出されます。

答えて

2

できることはいくつかあります。私は通常、渡されたコンテンツに基づいて高さを返すために、UITableViewCellサブクラスのクラスメソッドを持っていました。

+0

しかし、たとえば、テーブルビューのセルのラベルのフォントはxibファイル)をクラスメソッドで使用しますか? – Darren

+1

ペン先をロードして、適切な情報を取り出すことができます。それはおそらくそれを行うための最良の方法ではありません。可変高さのセルがあるときは、ペン先を使用せず、通常は直接テキストを描画します。 –

+0

よろしくお願いします。クライアントがnibファイルを編集して外観を調整できるようにするため、ペン先から情報を取得する必要があります。私はnibファイルをロードすると思います。 – Darren

関連する問題