【问题标题】:How can I pass information between storyboard scenes using segues?如何使用 segue 在情节提要场景之间传递信息?
【发布时间】:2013-02-25 13:29:32
【问题描述】:

我按照教程创建了 2 个故事板场景 Tutorial,并且我知道如何使用以下代码将信息从场景 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

   }
    } 

【问题讨论】:

  • 将场景 1 的 viewController 指定为场景 2 的代理。这是处理此问题的典型方式。

标签: ios objective-c ios6


【解决方案1】:

在您的 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;
}

然后您可以从Scene2ViewController 运行您的returned 方法,或者您可以只操作当前视图控制器上的公共变量,即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;
}

【讨论】:

  • 嗨,感谢您的回答,我确实收到以下行错误:destination.parent = self;从 Scene1ViewController *const_strong 分配给“UISplitViewController”的指针类型不兼容
  • 别在意如何访问场景 1 上的财产,我错误地将其声明为私有财产。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-27
  • 2012-02-03
相关资源
最近更新 更多