1

我正在使用 Storyboard 来构建我的应用程序: 在此处输入图像描述

而且我知道我可以使用以下方法将数据从“第一个视图控制器”传递到下一个控制器:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"some_segue"]) {
        vc = segue.destinationViewController;
        vc.data = @"data_i_want_to_pass";
    }
}

但是现在,数据正在传递给“Tab Bar Controller”,而不是“Discover Table View Controller”。有什么方法可以将数据从“第一个视图控制器”传递到“发现视图控制器”?谢谢。

4

2 回答 2

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";
    }
}
于 2013-03-21T05:48:08.230 回答
0

如果可以在应用程序启动时传递数据(因为那时所有这些控制器都将被实例化,并且嵌入 segue 将被调用),那么您可以将数据传递给标签栏控制器,而该控制器将不得不传递它到你想要的那个。因此,您必须对标签栏控制器进行子类化,并像您在问题中显示的那样传递数据。然后在标签栏控制器中,您可以在 viewDidLoad 中放入类似这样的内容:

DiscoverViewController *dvc = [(UINavigationController *)self.viewControllers[0] topViewController];
dvc.propIWantToSet =  self.propThatGotSet;

不过,您想要传递的数据似乎不太可能在启动时立即可用——如果是,那么您可以首先将其硬编码到 DiscoverViewController 中。在这种情况下,在 FirstViewController 中,您可以使用 self.childViewControllers[0] 访问标签栏控制器。一旦你有了那个引用,你就可以像我上面展示的那样获得对 DiscoverViewController 的引用。

于 2013-03-21T06:12:14.393 回答