1

2つのストーリーボードシーンを作成するためのチュートリアルに従いました。チュートリアルでは、次のコードを使用してシーン1からシーン2に情報を渡す方法を知っています。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    Scene2ViewController *destination = 
                  [segue destinationViewController];

    destination.labelText = @"Arrived from Scene 1";
}

ただし、チュートリアルではシーン1の新しいインスタンスの作成を回避するために巻き戻しを使用しており、以下のシーン1のメソッドを使用してシーン2から何かを割り当てることができないため、シーン2から情報を返す(ブール値を送信する)方法がわかりません。

    -(IBAction)returned:(UIStoryboardSegue *)segue {

Scene2ViewController *destination = 
                      [segue destinationViewController];
        if (destination.thisIsBooleanFromScene2){
       //do something

   }
    } 
4

1 に答える 1

0

Scene2ViewControllerヘッダーに、現在@propertyのView Controllerを配置して、パブリック変数にアクセスできるようにすることができます

だからScene2ViewController.h

#import "YourPreviousViewController.h"

//add this to your @interface
@property (strong) YourPreviousViewController *parent;

次に、現在のviewcontroller.mで

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
Scene2ViewController *destination = [segue destinationViewController];
destination.parent = self;
}

returned次に、からメソッドを実行するScene2ViewControllerか、現在のビューコントローラでパブリック変数を操作することができます。parent

編集:私は以前にそのような返されたメソッドを見たことがありません、あなたはあなたの現在のビューコントローラで必要な変数を設定するメソッドを作ることができます、そしてあなたが押し戻すか別のビューにセグエするときに実行Scene2ViewControllerされる実装することができます- (void) viewWillDisappear { }

//Scene2ViewController.m
- (void) viewWillDisappear {  
[self.parent returnAndSetBool:someBool];

//or if myBoolean in the previous view controller is a public variable you can just go:
//self.parent.myBoolen = someBool;
}

//CurrentViewController.m
- (void) returnAndSetBool: (bool) passbackVariable {
self.myBoolean = passbackVariable;
}
于 2013-02-25T13:40:34.307 に答える