気になる

アフェリエイト旅行

自動車

家庭菜園

« 仲秋の名月 9月真ん中 どうりで月が大きくて低い位置にあったわけ | トップページ | ボタンAをタップしたら、ラベル(非表示設定済)を表示。そのラベルをパン(指先で移動)させるようにする。 »

2013/09/18

Segueで値渡し 画面A→画面B。画面B→画面A

ViewControllerを2つ要して、画面遷移時に「画面A→画面B。画面B→画面A」のように値渡しをしたい。。。

お世話になりました。(T_T)
具体的には、画面Aのボタンをタップしたら
画面Aのラベルの文字が
画面Bのテキストフィールド内に表示される。
画面Bのテキストフィールドに文字を入力して
画面Bのボタンをタップしたら
画面Aのラベルの文字に反映。
<画面A:ViewController>
  • ラベル:アウトレット:myTateLabel

  • ボタン:アクション:editButtonPressed

<画面B:sizeViewController>
  • テキストフィールド:アウトレット:sizeTextHight

  • ボタン:アクション:sizeReturn
  • 手書きプロパティ:

    @property (strong, nonatomic) NSString *labelData;

-----------------------------------------------------------------------------

<セグエの設定>

画面Aの、シーン下にあるドックの中の、ViewController丸をつかんで
画面Bの、シーン上にドラッグ・アンド・ドロップ。
ポップ画面ではモーダルを選択。
セグエを選択して、identifierを入力。(今回はshowSizeFildViewと付けた)
-----------------------------------------------------------------------------
画面BであるsizeViewController.hに、
<プロトコルを書く>

@end
//
プロトコルの中身
@protocol sizeViewControllerDelegate <NSObject>

    -(void)sizeViewController:(sizeViewController *)sizeViewController didClose:(NSString *)message;

@end

<プロトコル宣言を書く>

#import <UIKit/UIKit.h>
@protocol
 sizeViewControllerDelegate;

<プロパティとしてデリゲートを書く>

@property (weak, nonatomic) IBOutlet UITextField *sizeTextHight;
@property (weak, nonatomic) IBOutlet UITextField *sizeTextWidth;

// プロトコル用にプロパティとしてデリゲートを用意

@property (nonatomic,assign) id <sizeViewControllerDelegate> delegate;

<手書きでプロパティを1つ書く>

@property (strong, nonatomic) NSString *labelData;

画面BであるsizeViewController.mに、

- (IBAction)sizeReturn:(id)sender {

    [self.delegate sizeViewController:self didClose:self.sizeTextHight.text];

}

-----------------------------------------------------------------------------

画面AであるViewController.hに、

#import <UIKit/UIKit.h>
#import "sizeViewController.h"

@interface ViewController : UIViewController <sizeViewControllerDelegate,UITextFieldDelegate>

画面AであるViewController.mに、

//ストーリーボードで、ドラッグ・アンド・ドロップで、セグエで遷移を設定したのでモーダルへの画面遷移に関しては、それだけでコードを書く必要は無い。(^O^)

//が、値を受け取りたいが為に、遷移前に呼ばれるこのメソッドに、デリゲートを書いている

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

{

 //Segueの特定

 if ( [[segue identifier] isEqualToString:@"showSizeFildView"] ) {

 // 遷移先コントローラを取得

 sizeViewController *svc = (sizeViewController *)segue.destinationViewController;

 //delegateというのは先程sizeViewControllerで記述したプロパティです。このプロパティにself、つまり自ら(クラス)を入れることで、デリゲートの通知先になれます。

 //遷移前に親オブジェクトのポインタを子に渡しておき、デリゲートを呼び出せるようにしておく.

 // 遷移元ポインタを渡しておく

        svc.delegate = self;

        svc.labelData = self.myTateLabel.text;

    }

}

//遷移先モーダルから呼ばれるメソッド(自前)。プロトコル利用しているので値が戻ってきているので利用「message

-(void)sizeViewController:(sizeViewController *)sizeViewController didClose:(NSString *)message

{

    self.myTateLabel.text = message;

 //値を受け取ってから、遷移先モーダル画面を閉じている

    [self dismissViewControllerAnimated:YES completion:nil];

}

 

- (IBAction)editButtonPressed:(id)sender {

//    sizeViewController *svc = [[sizeViewController alloc]init];

//    svc.delegate = self;

 

    [self performSegueWithIdentifier:@"showSizeFildView" sender:self];

}

@end

« 仲秋の名月 9月真ん中 どうりで月が大きくて低い位置にあったわけ | トップページ | ボタンAをタップしたら、ラベル(非表示設定済)を表示。そのラベルをパン(指先で移動)させるようにする。 »

MacMini」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Segueで値渡し 画面A→画面B。画面B→画面A:

« 仲秋の名月 9月真ん中 どうりで月が大きくて低い位置にあったわけ | トップページ | ボタンAをタップしたら、ラベル(非表示設定済)を表示。そのラベルをパン(指先で移動)させるようにする。 »

google検索

  • Google


    このブログを検索
    ウェブ全体から検索

カテゴリー

ニュース

  • 日経平均(長期)

    株価ミニチャートのブログパーツ
  • 経済指標(発表と内容)へのリンク
    http://jp.investing.com/economic-calendar/
  • 経済指標
  • . . .
  • 日経平均チャート
    by 株価チャート「ストチャ」
  • 株指標
2019年5月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31