转到另一个选项卡中的详细视图控制器?

时间:2016-01-19 16:13:35

标签: ios uiviewcontroller tabs uinavigationcontroller

我有一个包含多个标签的应用。在一个选项卡上,我的用户可以选择一个按钮,将其引导到另一个选项卡,但它将是一个详细视图控制器。

所以我在标签1上有一个按钮,用户可以转到第二个标签。

在标签2上,我有一个UINavigationControllerUIViewController设置为rootViewController,我需要登陆详细信息UIViewController

我不知道如何以正确的方式做到这一点。

我可以在第二个标签的rootViewController中创建一个静态(或class)变量,告诉我是否需要推送detailViewController。

但我有多个详细视图控制器,这意味着如果我切换到正确的选项卡,我可以转到详细的viewcontroller,这意味着rootviewcontroller中的静态变量不会重要,直到我回到rootviewcontroller。

关于如何改进设置的任何想法? (我为每个选项卡使用单独的故事板,以减少合并冲突)

1 个答案:

答案 0 :(得分:2)

从tab1单击按钮调用此方法。这会将DetailViewController添加到第二个选项卡的导航堆栈中。

#pragma mark- Injecting middle view controller

-(void)showDetailViewControllerInjectingMiddleViewController {

  // get navigation controller for your 2nd tab

  UINavigationController *navigationController = [[((UITabBarController *)self.window.rootViewController) viewControllers] objectAtIndex:1]; // 1 is for second tab
  NSMutableArray *controllers = [navigationController.viewControllers mutableCopy];

 [controllers addObject: [self prepareMiddleViewController]];
 [controllers addObject:[self prepareDestinationViewController]];

 [navigationController setViewControllers:controllers animated:NO];

 [self.tabBarController setSelectedIndex:1];

 }


-(UIViewController *)prepareMiddleViewController {

 UIViewController *rootViewController = [self.storyboard instantiateViewControllerWithIdentifier:rootViewIdentifier];
 return rootViewController;

}

-(UIViewController *)prepareDestinationViewController {

 UIViewController *detailViewController = [self.storyboard instantiateViewControllerWithIdentifier:detailViewIdentifier];
 return detailViewController;

}