Storyboard と UITableViewCell の高さ

投稿者: | 2012/08/07

Storyboard で作ったUITableViewCell の高さを反映させる

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

設定したのに反映されないRow Height の値。

 

(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 を格納した配列を使っています。

plist と UITableView | 極上の人生

 

セル数が多い場合は、あまり良い方法ではありませんね。

また折をみて見直しをかけようと考えています。
「こうしたらええがな」ってのがありましたら、コメント等いただけると、非常にありがたいです。

 



 

脚注

脚注
01 【インスタンス変数】.hファイルの interface で宣言しておくアレです。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください