使用 performSegue 将数据传递给目标视图控制器

Posted

技术标签:

【中文标题】使用 performSegue 将数据传递给目标视图控制器【英文标题】:Passing data to destination view controller with performSegue 【发布时间】:2015-06-25 01:02:34 【问题描述】:

所以我知道,如果有一个通过情节提要设置和激活的 segue,可以使用prepareForSegue 方法将数据传递给目标视图控制器。

我想知道如果使用performSegueWithIdentifier 方法,是否有办法做到这一点?似乎 prepareForSegue 方法仅在使用情节提要激活 segue 时才被调用,而不是使用 performSegue。

一个特殊的问题是我无法访问UIStoryboardSegue(它不是performSegue 中的参数,因为它在prepareForSegue 中),因此也无法访问目标VC。

【问题讨论】:

您的问题似乎不正确 - 在您调用 performSegueWithIdentifier:sender: 后,您的视图控制器将收到 prepareForSegue:sender: 消息。 UIStoryboardSegue 对象将具有属性 destinationViewController,因此您可以获得对目标视图控制器的引用。 How to pass prepareForSegue: an object 的可能重复项 @RoboticCat 好的,是的,你是对的,它正在调用prepareForSegue:sender: 我做错了测试,我的错。有没有办法删除问题?由于这个问题现在无关紧要 @user3809369:一旦写出答案,就无法删除问题 【参考方案1】:

答案在 *** 中。 How to pass prepareForSegue: an object

// When any of buttons are pressed, push the next view
- (IBAction)buttonPressed:(id)sender

    [self performSegueWithIdentifier:@"MySegue" sender:sender];


// This will get called too before the view appears
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

    if ([[segue identifier] isEqualToString:@"MySegue"]) 

        // Get destination view
        SecondView *vc = [segue destinationViewController];

        // Get button tag number (or do whatever you need to do here, based on your object
        NSInteger tagIndex = [(UIButton *)sender tag];

        // Pass the information to your destination view
        [vc setSelectedButton:tagIndex];
    

【讨论】:

以上是关于使用 performSegue 将数据传递给目标视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

Primeng - 对话服务将数据传递给对话组件

Qt C++ - 如何成功地将数据传递给子进程?

我可以使用花括号将数据传递给刀片组件吗?

通过 Segue 将数据传递给新的 ViewController

vue js将数据传递给组件

使用 jquery ajax 将数据传递给 php 的问题