在 TabbarController 中呈现 NavigationalViewController
Posted
技术标签:
【中文标题】在 TabbarController 中呈现 NavigationalViewController【英文标题】:Presenting NavigationalViewController in TabbarController 【发布时间】:2016-10-12 17:22:26 【问题描述】:我正在开发一个 ios 应用程序,其结构是基于标签栏的。我的根视图控制器是 TabBarController 但如果第一次启动应用程序,我需要在应用程序的开头显示一个导航视图控制器。我实现了一个 FlowViewController 来控制应用程序的流程。在 FlowViewController 中,我创建 TabBarController 并将其分配为 rootviewcontroller。
如何在应用程序的开头显示导航视图控制器,然后显示 TabBarController。
流视图控制器
TabBarViewController *rootVC = [[TabBarViewController alloc] init];
rootVC.delegate = self;
rootVC.tabBar.translucent = NO;
self.rootViewController = rootVC;
在 AppDelegate 中,didFinishLaunchingWithOptions
self.flowController = [[FlowController alloc] init];
self.window = [[UIWindow alloc] initWithFrame:[ [UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
self.window.rootViewController = self.flowController.rootViewController;
[self.window makeKeyAndVisible];
【问题讨论】:
【参考方案1】:如果应用程序通常需要设置屏幕,我将使用 NSUserDefaults 检查该应用程序之前是否已在 viewDidLoad()
中启动。如果没有,那么我将展示设置 viewController。用户完成设置过程后,将某些内容添加到 NSUserDefaults 中,以便在启动应用程序时知道用户已经完成了该过程。
【讨论】:
【参考方案2】:在我的应用程序中,我将 UINavigationController 设置为根视图控制器。然后我将 TabBarController 添加为 UINavigationController 的子项。
根据需要在 StoryBoard 中设计视图控制器。为 UITabBarController 设置 Storyboard id 并使用该 Storyboard 标识符调用标签栏控制器。
-(IBAction)LoginAction:(id)sender
UITabBarController *loadTabBar = [self.storyboard instantiateViewControllerWithIdentifier:@"TabBarViewControllerID"];
[self.navigationController pushViewController:loadTabBar animated:YES];
【讨论】:
以上是关于在 TabbarController 中呈现 NavigationalViewController的主要内容,如果未能解决你的问题,请参考以下文章
使用 TabBarController 呈现 ViewController
presentViewController over TabBarController 导致“尝试在其视图不在窗口层次结构中的 TabBarVC 上呈现 *VC”
如何通过 TabBarController => NavbarController 从 Appdelegate 呈现视图控制器
IBAction 使 TabBarController 应用程序崩溃