storyboardでnavigation
自作iPhoneアプリ一覧
今回はYou Tubeを使ってみました。
このチュートリアルはストーリーボードを使用してテーブルから詳細画面に遷移してセルのテキストデータを渡します。
場合によったら間違っている部分とかあるかもしれませんが、あくまで参考程度にご覧ください。
編集したコード
【MasterViewController.h】
@interface MasterViewController : UITableViewController
{
NSMutableArray *myData; //NSArrayでもかまいません
}
【MasterViewController.m】
#import "MasterViewController.h"
#import "DetailViewController.h"
@implementation MasterViewController
- (void)awakeFromNib
{
[super awakeFromNib];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
myData = [NSMutableArray arrayWithObjects:
@"春",
@"夏",
@"秋",
@"冬",
nil]; //配列myDataに4つのデータを追加
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [myData count]; //myDataの要素数(4)を返す
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSUInteger row = [indexPath row]; //行番号を取得
cell.textLabel.text = [myData objectAtIndex:row]; //行番号に対応する配列データを表示
return cell;
}
//storyboard専用の行をタップした時のメソッド
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showDetail"]) {
//オブジェクト間を繋ぐsegueのIdenfifierが「showDetail」と同じならば
DetailViewController *dvc = [segue destinationViewController];
//destinationViewControllerとはsegueの終端にあるview controllerのようです。
NSInteger selectedIndex = [[self.tableView indexPathForSelectedRow]row];
//選択されたセルの行番号
[dvc setDetailItem:[NSString stringWithFormat:@"%@",[myData objectAtIndex:selectedIndex]
//選択されたセルの行番号に対応するデータをNSString型のオブジェクトに初期化してDetailViewControllerにdetailItemの値として渡す
//detailItemはid型として自動的にDetailViewControllerに宣言されている。
]];
}
}
サンプルコードダウンロード