我在容器视图中有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
}
答案 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参考,您现在可以传递所需的对象。