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

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

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

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

【问题讨论】:

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

标签: ios segue uistoryboardsegue xcode-storyboard


【解决方案1】:

答案在 StackOverflow 中。 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];
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多