我正在使用Storyboard来构建我的应用:
我知道我可以通过使用类似的方式将数据从“First View Controller”传递到下一个控制器:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"some_segue"]) {
vc = segue.destinationViewController;
vc.data = @"data_i_want_to_pass";
}
}
但现在,数据传递给“标签栏控制器”,而不是“发现表视图控制器”。有什么办法可以将数据从“First View Controller”传递到“Discover View Controller”吗?感谢。
答案 0 :(得分:1)
use it :
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"PushToProdct"]) {
DiscoverViewController *discoverViewController = segue.destinationViewController;
discoverViewController.data=@"Data you want to pass";
}
}
答案 1 :(得分:0)
如果可以在app启动时传递数据(因为那时所有这些控制器都将被实例化,并且将调用embed segue),那么你可以将数据传递给标签栏控制器,并且该控制器将具有将它传递给你想要的那个。因此,您必须对选项卡栏控制器进行子类化,并传递您在问题中显示的数据。然后在标签栏控制器中,您可以在viewDidLoad中输入类似的内容:
DiscoverViewController *dvc = [(UINavigationController *)self.viewControllers[0] topViewController];
dvc.propIWantToSet = self.propThatGotSet;
但是,您想要传递的数据似乎不可能在启动时立即可用 - 如果是,那么您可以首先将其硬编码到DiscoverViewController中。在这种情况下,在FirstViewController中,您可以使用self.childViewControllers [0]访问选项卡栏控制器。一旦你有了这个参考,你可以得到我在上面显示的DiscoverViewController的引用。