如何将变量传递给另一个视图iOS

时间:2014-04-18 03:53:29

标签: ios objective-c

我在容器视图中有viewA和viewB。

我通过委托将var从viewA传递给containerviewcontroller。我需要将它从我的containerviewcontroller传递给tableviewcontroller。我尝试了两种方法,一种方式我能够通过它,但我无法访问容器视图中的viewA。我可以用第二种方式打开viewA,但Var没有通过。

请帮忙。

我的故事板流程如下。

containerview - > tabbarviewcontroller - > navigationviewcontroller - > tableviewcontroller

(void)openSavedProjectAt:(NSNumber *)index
{
    //delegate from another class   
    // works, and index value gets passed, but menu button doesn't work after, cuz didn't push with container?
    /*
    IncomeViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"incomeList"];
    [incomeNav pushViewController:vc animated:YES];
    vc.projectIndexToOpen = index;
    */  
    // the value doesn't get passed, but everything else works
    /*
    IncomeViewController *vc = [[IncomeViewController alloc]init];    
    vc.projectIndexToOpen = index;
    */    
    [self menuButtonPushed]; // close side menu
}

1 个答案:

答案 0 :(得分:0)

如果这是你的结构,

containerview - > tabbarviewcontroller - > navigationviewcontroller - > tableViewController

考虑你们之间的关系并将它们组合在一起。 tabBarController是containerViewController的childViewControllers [0](假设你只有一个子节点)。导航控制器是标签栏控制器的viewControllers数组中的控制器之一 - 如果它是第一个,那么viewControllers [0]。表视图控制器是导航控制器的topViewController,所以把它们放在一起就可以了,

TableViewController *tvc = (TableViewController *)[(UINavigationController *)[(UITabBarController *)self.childViewControllers[0] viewControllers][0] topViewController];

这有点难以解析,因此更容易阅读多行,

UITabBarController *tbc = self.childViewControllers[0];
UINavigationController *nav = tbc.viewControllers[0];
TableViewController *tvc = (TableViewController *)nav.topViewController;

使用tvc参考,您现在可以传递所需的对象。