1.プログラム中でひたすら"addSubview"でペタペタ貼っていく方法
2.xibファイルを用いてカスタムセルを作成する方法
3.Storyboardを用いてカスタムセルを作成する方法
今回は2番のxibファイルを用いてカスタムセルを作っていきたいと思います。
まず、New File...から新しい"Objective-C Class"ファイルを作ります。

ただし"Subclass of"はUITableViewCellに指定しましょう。

(ここではクラス名をtestCellとしていますが、以下ではtestとした場合の記述となります。)
作成したUITableViewCellクラスのヘッダファイル(.h)に次のように記述します。
@interface クラス名 : UITableViewCell{
@private
//これはタブに貼付けるためのラベル
IBOutlet UILabel* _nameLabel;
}
@property (nonatomic, retain) UILabel* nameLabel
次に(.m)ファイルに次のように記述します。
@implementation クラス名{
@synthesize nameLabel = _nameLabel;
-(void)dealloc{
_nameLabel = nil;
}
@end
ソースはたったこれだけです。
簡単でしょ?
次にnibファイルを作成します。
-------------------------------------------------
コラム:「nibファイル」とはGUIデザインのファイルを作成するための専用ツールです。
え?それxibじゃないの?と思いますよね?
勿論プロジェクトにあった「◯◯.xib」というファイルが、nibファイルを指します。
つまりxibファイル = nibファイルですが、過去にnibという拡張子になっていたため、今でもnibファイルと呼ばれる名残があります。
-------------------------------------------------
User InterfaceのViewを選択し作成します。

Device Familyは勿論iphoneです。
名前は分かりやすくするために、UITableViewCellクラスで名付けた名前(test)と同じにしました。
ここからは、今作成したnibファイルの編集です。
まずは、初めからあるUIViewを削除しましょう。
これのことです。Deleteボタンでさくっと削除しましょう。

次に、“Object Library”にあるTable View Cellを配置しましょう。

それでは、セルのレイアウトを作成しましょう。
私はボタンとラベルを次のように置きました。
では、レイアウトしたnibを、紐付けていきましょう。

作成したTableViewCellのnibをUITableViewCellクラスに紐付けます。
上図のようにTableViewCellを選択した状態で、次のようにIdentity InspectorのClassを、作成したnibファイルに指定します。

そして、識別するためのID、すなわちIdentifierをCellにしておきましょう。

そしてFile's OwnerをUIViewControllerに変更しておきましょう。


するとFile's OwnerにViewの欄が現れますので、TableViewCellに接続します。

そして最後に用意したIBOutletのラベルと紐付けをしましょう。

ここまでがnibファイルを用いたレイアウトです。
では、最後にTableView側での処理を行いましょう。
以下、TableViewでの処理
.mファイルで。
.mファイルの冒頭で
#import "test.h" //自分で作成したUITableViewCellクラスをインポートすること!
//セクション数は適当に!
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
//同様にセルの数も適当に設定!
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 2;
}
//セルを記述します。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//この【Cell】という文字列が先ほどIdentifierで設定したIDです。
//このIDによってどのカスタムセルか区別します。
static NSString *CellIdentifier = @"Cell";
//ここの 【test】 *cell の【】の部分は自分で作成したUITableViewCellクラスの名前です。
test *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if( cell == nil){
UIViewController *controller;
//initWithNibNameは作成したNibファイル名です。今はUITableViewCellクラスと同じにしたので、testになります。
controller = [[UIViewController alloc] initWithNibName:@"test" bundle:nil];
cell = (test*)controller.view;
}
cell.nameLabel.text = @"TEST";
return cell;
}
最後に、セルの高さの自動調整をしておきましょう。
- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"Cell";
test *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil){
UIViewController *controller;
controller = [[UIViewController alloc] initWithNibName:@"test" bundle:nil];
cell = (test *)controller.view;
}
return cell.bounds.size.height;
}
以上のコードを書いて実行すると次のような実行画面が出ます。

以上でカスタムセルのNibファイルを使った方法の紹介を終わります。