UITableViewControllerのお話(3) | 初心者がiPhoneアプリを作るブログ

初心者がiPhoneアプリを作るブログ

初心者がiPhoneアプリを作るブログです.
入門レベルですので開発初心者にも,できるだけ分かるように丁寧に説明していきます(多分).

さて,続きを書いていきましょう.
次は,セクションのヘッダーをつけてみましょう.
これも,関数の返り値で設定します.以下のコードを追記してください.
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    return [NSString stringWithFormat:@"section%d", section];
}
さて,初めて見るコードがあると思います.
return [NSString stringWithFormat:@"section%d", section];
これは返り値として「NSString型」のオブジェクトを返しています.
NSString型ですので,文字列な訳ですが,文字列の生成を「stringWithFormat」というクラスメソッドを用いて行っています.

このメソッドは書式指定で変数の中身を文字列に組み込んだNSString型のオブジェクトを生成するものです.

...よく分かりませんよね笑

つまり!!セクション番号によってヘッダーに表示する文字列を変えたい訳ですから,
関数の引数にあるsectionの中身を文字列に入れたい訳です.

そこで,「stringWithFormat」というクラスメソッドを用いれば,sectionの中身を文字列に入れることができます.

sectionは「NSInteger型」ですので,文字列中の「%d」で表された部分に入るわけですね.
この「%d」が書式指定と呼ばれるもので,文字列中に入れたい変数の型によって変わります.

次は,行に表示する文字列を設定しましょう.
ファイルの中から以下の関数を探して,書き換えて下さい.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static  NSString *CellIdentifier = @"Cell";


    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefaul
reuseIdentifier:CellIdentifier];
    }
    
    // Configure the cell...
    // 書き換えるのはここからです.
    [cell.textLabel setText:[NSString stringWithFormat:@"section:%d, row:%d", indexPath.section,indexPath.row]];
    [cell.textLabel setTextAlignment:UITextAlignmentLeft];
    
    return cell;
}

各行に対してこの関数が呼ばれますので,呼ばれた行によって文字列を変える場合は,
引数の「indexPath」の内容によってif文で分岐させます.

この例では,セクション番号と,行番号をUITableViewCellに表示するようにしています.
indexPathの「section」「row」プロパティにアクセスすると,セクション番号と行番号を取得することができます.

UITableViewCellのインスタンスを「cell」という変数名ですでに作成してくれていますので,
それを書き換えて文字列を表示させましょう.

UITableVIewCellの「textLable」プロパティによりUILabel型のインスタンスを取得することができます.

この「UILabel型」の「text」プロパティを設定することで文字列を表示することができます.
[cell.textLabel setText:[NSString stringWithFormat:@"section:%d, row:%d", indexPath.section, indexPath.row]];
設定する文字列は,「[NSString stringWithFormat:@"~"];」を使います.
これでセクション番号と行番号を表示することができますよね.

[cell.textLabel setTextAlignment:UITextAlignmentLeft];

その下のこの行では,表示する文字列を左揃えにしています.
これもUILabelのプロパティを設定することで可能になります.
左揃えの他には,右揃え,中央揃えがあります.

少し長くなってきましたので,この辺りでいったん区切ります.

次の記事へ

HOMEに戻る