2012年8月18日土曜日

iPhone アプリ開発:Storyboardを使って異なるView間での値の受け渡し

Storyboardを使って異なるView間で値を受け渡す方法

参考にしたブログ: http://d.hatena.ne.jp/kazukingband/20120302/1330688818
 (とても新設に解説してくれていて感謝でした)

◇定義
・データを渡す方の画面: FirstViewクラス
・データを受け取る方の画面: SecondViewクラス
・1stViewにある2ndViewに移動するボタン: Goto2ndView
・FirstViewから渡すデータは(int64_t)型の変数scoreに格納されている値


◇方法
1. Goto2ndViewボタンを押したらSecondViewに遷移するように設定(controlキーを押す操作)
 その際、「storyboard segue」は「Modal」を選択
 また、Identifierに任意の名前(任意とはいえこの名前が重要)
  ※ここでは、"gosecond"にしておきます

2. FirstViewのmファイル(FirstView.m)にSecondViewのhファイル(SecondView.h)をインポート
 (#import "SecondView.h")

3. FirstViewのmファイル(FirstView.m)に以下を追加

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if([[segue identifier] isEqualToString:@"gosecond"]){ 
        int64_t score = 1234;
        SecondView *svc =[segue destinationViewController];
        svc.Data = score;
    }
}


 「svc.Data」の「Data」がデータ受け渡しのキー変数でSecondView.hで定義する(4参照)

4. SecondViewのhファイル(SecondView.h)でDataを定義する。


  @property int64_t Data;

 ※この時、3でDataの元となるデータの型が同じになっていること
  (ここでは、int64_t型)

5. SecondViewのmファイル(SecondView.m)に以下を追加

  @synthesize Data; 


6. あとは、SecondView.mファイルの中で、変数Dataを使ってデータを受け取る。
 こんな感じで

    double aa;
    aa = labelData/100.0;
    NSLog(@"%f",aa);


意外と簡単かなだけど、5を忘れそうかな。