storyboardでnavigation | tototan

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に宣言されている。
  ]];
   }
}



サンプルコードダウンロード