TableView – 選択された項目を変数に格納して別画面に遷移

元画面・・・RootViewController
遷移先・・・DetailViewController

まず、遷移先の画面で、選択された項目を格納するための変数とメソッドを用意する。

『DetailViewController.h』

@interface DetailViewController : UITableViewController<UIAlertViewDelegate>{
    NSString *textSelected;
}
@property (nonatomic, retain) NSString *textSelected;
-(id) initWithTextSelected:(NSString *) text;

『DetailViewController.m』

@synthesize textSelected;

-(id) initWithTextSelected:(NSString *) text {
    self.textSelected = text;
    return self;
}

次に、遷移元となるTableViewで、遷移先の画面とメソッドを使用できるようにする。

『RootViewController.h』

@interface RootViewController : UITableViewController{
    DetailViewController *detailViewController;
}
@property (nonatomic, retain) DetailViewController *detailViewController;

『RootViewController.m』

@synthesize detailViewController;

遷移元のテーブルが選択されたときに起動するメソッドで、画面の用意と、あらかじめ用意していたメソッドの呼び出しとデータの格納を行い、画面を遷移させる。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *selectedItem = [listGroup objectAtIndex:[indexPath row]];
    
    DetailViewController *d = [[DetailViewController alloc] 
                                initWithNibName:@"DetailViewController" 
                                bundle:[NSBundle mainBundle]];
        
    self.detailViewController = d;
    [d release];

    [self.detailViewController initWithTextSelected:selectedItem];
    [self.navigationController pushViewController:self.detailViewController animated:YES];
    
    [selectedItem release];
}

これで、画面遷移時に、変数textSelectedに選択された項目の内容が格納された状態になる。

TableView – テーブルに項目を追加

TableViewに項目を追加するソースコード。

NSMutableArray *listGroup;

- (void)viewDidLoad
{
    //---initialize the array---
    listGroup = [[NSMutableArray alloc] init];
    
    //---add items---
    [listGroup addObject:@"データ1"];
    [listGroup addObject:@"データ2"];
    [listGroup addObject:@"データ3"];

    [super viewDidLoad];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [listGroup 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];
    }

    NSString *cellValue = [listGroup objectAtIndex:indexPath.row];
    cell.textLabel.text = cellValue;
    
    return cell;
}

- (void)dealloc
{
    [listGroup dealloc];
    [super dealloc];
}