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 で宣言しておくアレです。 |
---|