将数据传递到容器视图

时间:2013-03-21 05:23:20

标签: iphone ios

我正在使用Storyboard来构建我的应用: enter image description here

我知道我可以通过使用类似的方式将数据从“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”吗?感谢。

2 个答案:

答案 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的引用。