1

我遵循了创建 2 个故事板场景教程的教程,并且我知道如何使用以下代码将信息从场景 1 传递到场景 2:

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

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

但是,我不清楚如何从场景 2(发送布尔值)返回信息,因为教程正在使用展开来避免创建场景 1 的新实例,并且我不能使用下面场景 1 上的方法来分配场景 2 中的任何内容:

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

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

   }
    } 
4

1 回答 1

0

在您的Scene2ViewController标题中,您可以放置​​一个@property当前视图控制器,以便您可以访问其公共变量

所以在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 回答