我无法在2 viewControllers
之间传回数据。它们与segue链接,我正在尝试链接第二个viewController
中生成的数据,并在第一个viewController
中使用它。
它的工作方式是用户从第一个viewController
开始,导航到第二个viewController
,其中包含多个要选择的设置。当他们导航回第一个viewController
时,我希望传递数据。使用prepareForSegue
,它非常简单,但我该怎么办?是否有一种方法,如prepareForSegue反向工作(即返回主viewController
)?我曾尝试使用unwindSegues
,但我不确定这是否适合使用。任何人都可以告诉我正确的设置方法吗?或者我应该使用不同的方法?任何有关我应该做的事情的帮助将不胜感激。
答案 0 :(得分:0)
最好的解决方法是使用delegate
。请参阅文章here和here以了解授权。 This answer和this 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