私はカスタムテーブルビューセルを持つテーブルビューを持っています。その高さは、セルに表示されるテキストの量に依存します。ここで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メソッドが呼び出されます。
しかし、たとえば、テーブルビューのセルのラベルのフォントはxibファイル)をクラスメソッドで使用しますか? – Darren
ペン先をロードして、適切な情報を取り出すことができます。それはおそらくそれを行うための最良の方法ではありません。可変高さのセルがあるときは、ペン先を使用せず、通常は直接テキストを描画します。 –
よろしくお願いします。クライアントがnibファイルを編集して外観を調整できるようにするため、ペン先から情報を取得する必要があります。私はnibファイルをロードすると思います。 – Darren