iOS 在使用情节提要推送视图控制器时传递数据

Posted

技术标签:

【中文标题】iOS 在使用情节提要推送视图控制器时传递数据【英文标题】:iOS pass data when using storyboard to push the view controller 【发布时间】:2013-07-21 01:22:29 【问题描述】:

我开始更频繁地使用故事板,但我遇到了问题。通常,当您使用 UINavigationController 推送视图控制器时,您可以通过以下方式执行此操作,并且您可以随之传递数据:

UIViewController *vc = [[UIViewController alloc] init];
vc.link = [self link];
vc.name = [self name];

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc]
[nav presentViewController:vc completion:nil animated:YES];

(我为内存做了上面的代码,所以它可能不是 100% 正确的)。

现在我正在使用情节提要,我并没有自己实例化视图控制器,那么我该如何传递数据呢?谢谢!

【问题讨论】:

【参考方案1】:

使用prepareForSegue:sender: 方法。

例如:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

    if ([segue.identifier isEqualToString:@"SegueID"])
    
        UIViewController * vc = segue.destinationViewController;
        vc.link = [self link];
        vc.name = [self name];
    

或者,如果您的目标视图控制器是 UINavigationController,请使用:

UINavigationController * navigationController = segue.destinationViewController;
UIViewController * vc = [navigationController.viewControllers objectAtIndex:0];

【讨论】:

谢谢!这正是我一直在寻找的!谢谢。 如上...非常感谢您的回答,非常有帮助! 我现在遇到了类似的问题,但我不知道如何找到 segue 标识符。我的 ViewController 在调用 [self.navigationController pushViewController:vc animated:YES]; 后被调出我没有在情节提要中进行 segue,所以我不知道使用什么标识符来发送数据。 糟糕,忘记标记你了,@StephSharp @Inbl 您最好提出一个新问题并包含您的代码。您的问题似乎与此不同,如果我能看到您的代码,就会更容易找出问题所在。

以上是关于iOS 在使用情节提要推送视图控制器时传递数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在情节提要中的 2 个视图控制器之间传递数据?

xcode/ios:以编程方式推送视图控制器并传递行信息

在视图控制器/情节提要场景之间传递核心数据结果

使用情节提要时使用 UITabBarController 在视图之间传递数据

使用 ios5 和情节提要推送带有参数的视图控制器

在 xamarin.ios 中的视图控制器之间传递数据