我有一个包含多个标签页的应用程序。在一个选项卡上,我的用户可以选择一个按钮,将他们带到另一个选项卡,但那里将是一个详细 View Controller 。
所以我在选项卡 1 上有一个按钮,用户可以通过该按钮转到第二个选项卡。
在选项卡 2 上,我有一个 UINavigationController
,其中一个 UIViewController
设置为 rootViewController
,我需要在其中登陆详细信息 UIViewController
。
我不知道如何以正确的方式做到这一点。
我可以在第二个选项卡的 rootViewController 中创建一个静态(或 class
)变量,它会告诉我是否需要推送 detailViewController。
但我有多个详细 View Controller ,这意味着如果我切换到正确的选项卡,我可以转到详细 View Controller ,这意味着在我返回到该 Root View Controller 之前,该 Root View Controller 中的静态变量无关紧要.
关于如何改进设置的任何想法? (我为每个选项卡使用单独的 Storyboard,以减少合并冲突)
最佳答案
在您从 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;
}
关于ios - 转到另一个选项卡中的详细 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34881657/