当应用程序不是从主要详细信息模板制作时,是否可以使用segue在objective-c中的故事板之间传递数据?
我见过的唯一例子是主视图详细信息。
答案 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];