Storyboard で作ったUITableViewCell の高さを反映させる
Storyboard で用意したUITableViewCell の高さですが、なぜかそのままだと反映されません。
今回はそれを反映させる方法をご紹介。

(float)tableView: heightForRowAtIndexPath: を実装
方法は簡単。
UIViewController.m に(float)tableView: heightForRowAtIndexPath: を実装してそこで高さを設定します。
こんな感じ。
- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
// UIViewController のインスタンス変数にセルのIdentifier を配列にして放り込んでおく
// それをindexPath の行インデックスを使って引き出し
NSDictionary* mdCell = [(NSArray*)tableStructure_ objectAtIndex:indexPath.row];
NSString* cellIdentifier = [mdCell objectForKey:@"Identifier"];
// 引き出したセルのIdentifier を使って、Storyboard からセルを引き出す
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
// セルの高さを取得
float cellHeight = cell.frame.size.height;
return cellHeight;
}
本当はcellForRowAtIndexPath: で取得したUITableViewCell から直でframe.size.height を取得できれば良い感じなのですが、ちょっと方法が見つけられなかったので、UITableView のインスタンス変数 *01【インスタンス変数】.hファイルの interface で宣言しておくアレです。 にテーブルの行と対応した配列を用意して、そこにIdentifier を放り込んで、随時呼び出して利用しています。
私の場合は、こちらの方法でplist を利用したNSDictionary を格納した配列を使っています。
セル数が多い場合は、あまり良い方法ではありませんね。
また折をみて見直しをかけようと考えています。
「こうしたらええがな」ってのがありましたら、コメント等いただけると、非常にありがたいです。
脚注
| ↩01 | 【インスタンス変数】.hファイルの interface で宣言しておくアレです。 |
|---|