我有一个包含多个标签的应用。在一个选项卡上,我的用户可以选择一个按钮,将其引导到另一个选项卡,但它将是一个详细视图控制器。
所以我在标签1上有一个按钮,用户可以转到第二个标签。
在标签2上,我有一个UINavigationController
,UIViewController
设置为rootViewController
,我需要登陆详细信息UIViewController
。
我不知道如何以正确的方式做到这一点。
我可以在第二个标签的rootViewController中创建一个静态(或class
)变量,告诉我是否需要推送detailViewController。
但我有多个详细视图控制器,这意味着如果我切换到正确的选项卡,我可以转到详细的viewcontroller,这意味着rootviewcontroller中的静态变量不会重要,直到我回到rootviewcontroller。
关于如何改进设置的任何想法? (我为每个选项卡使用单独的故事板,以减少合并冲突)
答案 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;
}