[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的なものを書けたら良いな。
最後までお読み頂きましてありがとうございました。