2011年5月16日月曜日

[iOS] カスタムUITableViewControllerをつくる (2)

前回、カスタムUITableViewControllerをつくる

最初に簡単な例として、配列に入っている文字列を一覧でテーブルビューに表示してみる。

1.[CourseListViewController.h]に、文字列一覧を格納する[NSArray]を宣言する。
@interface CourseListViewController : UITableViewController {
@private
    NSArray* item_; // テーブルに表示する要素を保持するための配列
    
}


2.[CourseListViewController.m]を開き、[viewDidLoad]の中で、配列に文字列一覧を格納する。ビューコントローラがインスタンス化された時に呼ばれ、ここに初期化処理を書きます。
※もしソース内にメソッドが記載されていない場合は追加してください。
#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
    
    // 配列に文字列一覧を格納する
    item_ = [[NSArray alloc] initWithObjects:
                    @"DATA 1", @"DATA 2", @"DATA 3",
                    @"DATA 4", @"DATA 5", nil];
    
}


3.データの準備ができたのでテーブルに表示する処理を書きます。テーブルにデータを表示させるには、テーブルからプロトコル(呼び出し、イベントみたいなもの)に対してデータを返してあげる必要があります。例えば、テーブルからデータは何件ありますか?やここのデータはなんですか?といった呼び出しがされます。それぞれに適切な値を返してあげることでテーブルにデータが表示されます。
[CourseListViewController.m]を開き、以下のコードを追加します。
※もしソース内にメソッドが記載されていない場合は追加してください。

ここでは以下の内容を返している
・セクション数(データのグループ数)
・セクション内のデータ数
・あるセクションの何番目のセルの内容

#pragma mark - Table view data source

// テーブル内のセクション数を返す
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

// テーブル内のセクション毎のデータ数を返す
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    // 配列に格納されいる文字列数を返してあげる
    return [item_ count];
}

- (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...
    // セルのラベルに文字列を代入する
    cell.textLabel.text = [item_ objectAtIndex:indexPath.row];
    
    return cell;
}


4.起動してみると、5件と少ないですがデータが表示されました。



次回、カスタムUITableViewControllerをつくる (3)

0 件のコメント:

コメントを投稿