iPhoneアプリ開発基本(11)

このエントリーをはてなブックマークに追加
はてなブックマーク - iPhoneアプリ開発基本(11)
Share on Facebook
Post to Google Buzz
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
[`grow` not found]

昨日はTableViewControllerのSectionとRow、そしてStyleについて説明しました。
今回はCellについて説明します。

iPhone_Seminar_banner

UITableViewController:Cell

とりあえず、まずCellとはなんでしょう?

Cell1 Cell2
Cell3 Cell4

上の表のように、表のある一升のことをCellといいます。
この場合は4つのCellがある、ということです。 
ちなみに昨日やったRowは行とも言うため、上の表の場合、Cell1とCell2がRow1、Cell3とCell4がRow2と言えます。

ではCellについてのコードを見ていきましょう。

cellForRowAtIndexPath

mファイルにある以下の部分を見てください。

// Customize the appearance of table view cells.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *CellIdentifier = @”Cell”;

 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

}

 

// Configure the cell.

return cell;

}

この【cellForRowAtIndexPath】の部分が実際にCellの内容について記述している部分になります。
正しくは

「○番目のRowにCellを作るので、内容を教えて」

と呼ばれているのです。
なのでCellの内容を教えてあげている、という感じです。 
そのため、

// Configure the cell.

return cell;

この通り戻り値はCell自体、となります。

それでは、実際にCellの中身を簡単に作ってみましょう!

if (cell == nil) {

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

cell.textLabel.text = @”Cellです!;

}

Cellの中には最初からTextLabelが設定されています。
そのTextLabelのTextに文字列を入れてあげましょう。

これで実行をすると

iPhoneアプリ開発基本(11):TableViewController:Cell

このように3行に渡って「Cellです!」と表示されます。

なぜ3行だけ?

と思った方。前回を見直してくださいね。

// Customize the number of sections in the table view.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

return 2;

}

 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return 3;

}

この【numberOfRowsInSection】でRowの数を3行に設定しているからです。

さすがに3行を同じだとおもしろくないので3つを分けて表示してみましょう。

// Customize the appearance of table view cells.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *CellIdentifier = @”Cell”;

 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault   reuseIdentifier:CellIdentifier] autorelease];

cell.textLabel.text = @”Cellです!;

}

 

switch (indexPath.row) {

case 0:

cell.textLabel.text = @”最初のセル;

break;

case 1:

cell.textLabel.text = @”2番目のセル;

break;

case 2:

cell.textLabel.text = @”最後のセル;

break;

default:

cell.textLabel.text = @”それ以外のセル;

break;

}

 

// Configure the cell.

return cell;

}

switch文を利用して簡潔にしていますが、switch文については今回説明は省きます。
プログラムの本とかを見てみると、どの言語でも大概同じように使い方の説明は載っていますので参考にしてみてくださいね。

indexPath】 は引数として渡されてきている「○番目」です。
Cellを必要としている場所の情報が入っていますので、その中でRowの情報を引き出します。
それが

indexPath.row

この部分。
ちなみにSectionの情報も取得できます。

indexPath.section

これでOK。

さて、RowもSectionも両方ともですが、注意としては通常の配列と同様「0から始まる」ということです。
一番上だからと1を指定しても2番目になってしまいますからね、注意してください。

それでは実行してみましょう!

iPhoneアプリ開発基本(11):TableViewController:Cell

これで任意の場所のCellの変更方法がわかりました!

今回のことを応用して自分でも作ってみましょう!
Styleを【Plain】から【Grouped】にした後、Sectionごとに内容を変更することにチャレンジしてみてください!

iPhone_Seminar_banner

関連している記事:


Copyright(c) 2010 EUI All Rights Reserved.