在故事板之间传递数据,而不是主要详细信息模板

时间:2013-09-30 14:47:27

标签: objective-c uistoryboard

当应用程序不是从主要详细信息模板制作时,是否可以使用segue在objective-c中的故事板之间传递数据?

我见过的唯一例子是主视图详细信息。

1 个答案:

答案 0 :(得分:0)

是的,确实如此。您可以在viewController中实现prepareForSegue:sender:,如下所示:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"MySegue"]) {
        MyOtherViewController *destination = (MyOtherViewController *)segue.destinationViewController;
        destination.someProperty = self.someOtherProperty;
    }
}

这将在你的segue执行之前被调用,为你提供一个你想要的viewController的钩子。

编辑:

我没有意识到你的ViewControllers在不同的Storyboard中。这个问题已经得到了很好的回答,例如:https://stackoverflow.com/a/9610972/1716763

你实际上不会使用segue,你会以编程方式做事情,并将第二个视图控制器推送到导航堆栈,或以模态方式呈现。

我已经调整了@ Inafziger的答案中的一些代码以适合你的例子:

UIStoryboard *secondStoryBoard = [UIStoryboard storyboardWithName:@"secondStoryBoard" bundle:nil];
MyOtherViewController *myViewController = (MyOtherViewController *)[secondStoryBoard instantiateViewControllerWithIdentifier:@"myOtherViewController"];

myViewController.someProperty = self.someOtherProperty;

[self.navigationController pushViewController:myViewController animated:YES];