Xcode展开Segues

时间:2014-07-21 14:10:50

标签: objective-c xcode5 segue

我无法在2 viewControllers之间传回数据。它们与segue链接,我正在尝试链接第二个viewController中生成的数据,并在第一个viewController中使用它。

它的工作方式是用户从第一个viewController开始,导航到第二个viewController,其中包含多个要选择的设置。当他们导航回第一个viewController时,我希望传递数据。使用prepareForSegue,它非常简单,但我该怎么办?是否有一种方法,如prepareForSegue反向工作(即返回主viewController)?我曾尝试使用unwindSegues,但我不确定这是否适合使用。任何人都可以告诉我正确的设置方法吗?或者我应该使用不同的方法?任何有关我应该做的事情的帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

最好的解决方法是使用delegate。请参阅文章herehere以了解授权。 This answerthis one也可以提供帮助。

答案 1 :(得分:0)

你不必做那样的事情。展开方法看起来像这样:

- (IBAction)unwindToPackerView:(UIStoryboardSegue*)sender 您可以访问segue,您可以参考源视图控制器(2视图控制器)

- (IBAction)unwindToPackerView:(UIStoryboardSegue*)sender {

    // you can check is this right segue if you have more than one:
    if ([sender.identifier isEqualToString:@"SegueIdentifier"]) {
         CustomViewController *vc2 = sender.sourceViewController;
         // get the data from source view controller
    }
}

请注意,您应该将此方法添加到第一个视图控制器。

//扩展

如果你想在按钮(条形按钮等)之后调用unwind segue,只需按住控制按钮从按钮拖动到故事板中的展开图标(退出图标)。

但是如果你想以编程方式运行unwind segue(在发生某些动作之后,比如轻扫手势),你应该将你的展开segue连接到视图控制器(文件所有者)。从视图控制器(文件所有者)简单控制拖动到故事板中的展开图标,然后选择适当的segue。 在动作(例如滑动)发生时的代码中调用:

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender