2012年4月16日月曜日

カスタムTableVIewCellを作ってみる

件名の通りカスタムTableViewCellを作ってみました。
iOSのドキュメントにも記載がありましたがよくわからないまま、とりあえず動きはします。

最初にプロジェクトの作成。
テンプレートは Master-Detail Application を使用します。
とりあえずプロジェクト作成後、一度ビルドと実行をしておきます。

カスタムTableViewCellを作るにはまず空のxibファイルを作成します。
File → New → File... でテンプレート選択画面で User Interface → Empty を選択して保存します。(ファイル名はEditTableViewCellとしました)

できあがったxibファイルに TableViewCell を貼付けます。
合わせて Label と TextField を TableViewCell 内に配置します。

次に、MasterViewController.hに以下を追加
@property (retain, nonatomic) IBOutlet UITableViewCell *editTableViewCell;

次に、EditTableViewCell.xibを開きFile's Ownerを選択します。
Identity inspectorを開きClassで MasterViewController を選択します。
続けれFile's Ownerをcontrolキーを押しながら選択するとOutletsに editTableViewCellが表示されているのでxibファイル内のTableViewCellオブジェクトと関連付けを行います。

MasterViewController.mを開きtableView:cellForRowAtIndexPath:を以下のように修正します。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        [[NSBundle mainBundle] loadNibNamed:@"EditTableViewCell" owner:self options:nil];
        cell = editTableViewCell;
        self.editTableViewCell = nil;
    }
    
    return cell;
}

これでカスタムTableViewCellの完成です。
配置してあるLabelやTextFieldに値を入れたりする場合はtagを使用することで操作することができます。
// EditTableViewCellのTextFieldのtagを102とした場合
UITextField *txtField = (UITextField *)[cell viewWithTag:102];





0 件のコメント:

コメントを投稿