[XCODE] UITableViewCellをカスタマイズする方法
今日もiPhone開発ネタです(*゚▽゚)ノ
UITableViewを使う機会は多いかと思いますが、 そこに表示するセルにはいくつかのパターンが存在します。
しかしそのパターンに縛られず自由に、レイアウトを設定したい場合には、セルの作成が必要となります。
今日は、レイアウトを自由に作成出来るUITableViewCellの作り方を記載したいと思います。

そのXibファイルを読み込み、UITableViewCellのインスタンスを作成する流れとなります。
Xibファイルを読み込む方法は、Nibファイルを複数使って一つの画面を作成する@YoheiM.NETも参考にしてみて下さい。
例えばこんな感じで用意します。

ここでのポイントを列挙します。
tag番号を付ける理由は、後ほどプログラムからラベルに値を設定する際に、 ラベルを特定する為に使います。
続いて、上記で作成したXibファイルを読み込み、TableVlewCellを作成し、 値を設定する箇所です。
以下のようなソースコードで実現出来ます。今回は、UITableViewDataSourceDelegateで セルを返却するメソッドでの例を示します。
また、iPhone開発ネタでこんなTips的なものを書けたら良いな。
最後までお読み頂きましてありがとうございました。
UITableViewを使う機会は多いかと思いますが、 そこに表示するセルにはいくつかのパターンが存在します。
しかしそのパターンに縛られず自由に、レイアウトを設定したい場合には、セルの作成が必要となります。
今日は、レイアウトを自由に作成出来るUITableViewCellの作り方を記載したいと思います。

UITableViewCellのレイアウトを自由に作成する
そのためには、UITableViewCellのレイアウトを定義するXibファイル(Nibファイル)を用意します。そのXibファイルを読み込み、UITableViewCellのインスタンスを作成する流れとなります。
Xibファイルを読み込む方法は、Nibファイルを複数使って一つの画面を作成する@YoheiM.NETも参考にしてみて下さい。
例えばこんな感じで用意します。

ここでのポイントを列挙します。
- File's Ownerに自作したCellのインスタンスを保持するクラスを指定する
- Cell上に配置する要素それぞれに、tag番号を指定する
tag番号を付ける理由は、後ほどプログラムからラベルに値を設定する際に、 ラベルを特定する為に使います。
続いて、上記で作成したXibファイルを読み込み、TableVlewCellを作成し、 値を設定する箇所です。
以下のようなソースコードで実現出来ます。今回は、UITableViewDataSourceDelegateで セルを返却するメソッドでの例を示します。
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// キャッシュからCellインスタンスを取得する事を試みる
static NSString *identifier = @"CustomTableCellView";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
// キャッシュから取得出来なかった場合には、
// Xibファイル(Nibファイル)から読み込んで、UITableViewCellのインスタンスを作成する
// 今回の場合、XibファイルのOwnerは、TableCellViewControllerという自作クラスであり、
// TablecellViewControllerクラスのtvCellフィールドに、Xibファイル読み込み時に、
// Xibファイルで定義した自作のUITableViewCellが設定されるようにしている。
if (cell == nil) {
TableCellViewController *tvCellViewController = [[TableCellViewController alloc] init];
[[NSBundle mainBundle] loadNibNamed:@"TableCellView" owner:tvCellViewController options:nil];
cell = tvCellViewController.tvCell;
}
// tagを指定して、Xibファイルで作成したUITableViewCell上に配置した
// UILabelにアクセスし、そこに値を設定する。
UILabel *label;
label = (UILabel *)[cell viewWithTag:1];
label.text = @"tag1のラベルを設定してみた";
label = (UILabel *)[cell viewWithTag:2];
label.text = @"tag2のラベルに値を設定した";
label = (UILabel *)[cell viewWithTag:3];
label.text = @"tag3のラベルに値を設定した";
return cell;
}
ここが肝となります。loadNibNamed:owner:options:関数で、XibファイルからUITableViewCellの
インスタンスを作成し、その後tagを用いてラベルを特定して値を設定しています。最後に
UITableViewCellは色々なレイアウトが用意されていますが、文字のサイズを変えたいとか、 文字の配置を変えたいなどの要望があると、自作する道も考える必要がありそうです。また、iPhone開発ネタでこんなTips的なものを書けたら良いな。
最後までお読み頂きましてありがとうございました。






