将数据传递到容器视图
我用故事板来建立我的应用程序: 将数据传递到容器视图
而且我知道我可以使用类似通过从“第一个视图控制器”下一个控制器的数据:
-(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”?谢谢。
如果它的确定通过在应用程序启动的数据(因为这时候所有这些控制器将被实例化,并嵌入SEGUE会被调用),那么你可以将数据传递到标签栏控制器,并该控制器将不得不将其传递给你想要的那个。因此,您必须继承标签栏控制器的子类,并传递您在问题中显示的数据。然后在标签栏控制器,你可以把这样的事情在viewDidLoad中:
DiscoverViewController *dvc = [(UINavigationController *)self.viewControllers[0] topViewController];
dvc.propIWantToSet = self.propThatGotSet;
这似乎并不可能的是,那你要传递的数据可立即启动 - 如果它是,那么你可以将它首先硬编码到DiscoverViewController中。在这种情况下,在FirstViewController中,您可以使用self.childViewControllers [0]访问标签栏控制器。一旦你有了这个引用,你可以像上面展示的那样获得对DiscoverViewController的引用。
我明白了,谢谢。实际上,我试图从“发现视图控制器”控制“第一视图控制器”(例如更改背景颜色),所以我需要将“第一视图控制器”的引用传递给“发现视图控制器”,然后我可以将委派分配给“发现视图控制器”。我已经通过您的解决方案解决了它,再次感谢,但有没有更好的方法来实现它? – iForests 2013-03-21 08:35:01
'FirstViewController * fvc =(FirstViewController *)self.parentViewController.parentViewController.parentViewController;''[fvc doSomething];'这是我试过的另一个解决方案。它工作但丑陋... – iForests 2013-03-21 08:40:01
use it :
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"PushToProdct"]) {
DiscoverViewController *discoverViewController = segue.destinationViewController;
[email protected]"Data you want to pass";
}
}
当应用程序启动时,您想传递的数据是否可用?我问这个,因为你展示的所有控制器都将在启动时实例化。 – rdelmar 2013-03-21 05:59:33
是的,我想通过“第一视图控制器”的参考。 – iForests 2013-03-21 08:41:52