【发布时间】:2013-06-27 07:43:34
【问题描述】:
我正在开发基于故事板的应用程序,我想知道是否可以有 2 个 TabBarController - 一个用于未登录的用户,另一个用于登录的用户。我可以在登录按钮操作时将 NotLoggedInTabBarController 交换为 LoggedInTabBarController 吗?
【问题讨论】:
标签: ios uitabbarcontroller uistoryboard
我正在开发基于故事板的应用程序,我想知道是否可以有 2 个 TabBarController - 一个用于未登录的用户,另一个用于登录的用户。我可以在登录按钮操作时将 NotLoggedInTabBarController 交换为 LoggedInTabBarController 吗?
【问题讨论】:
标签: ios uitabbarcontroller uistoryboard
如果您在情节提要(身份检查器)中的 viewControllers 中添加恢复 ID,则可以通过调用方法 instantiateViewControllerWithIdentifier: 来实例化控制器
在你的情况下,也许我会实例化一个父视图控制器,当想要交换 tabBarcontroller 时,我会调用
[parentViewController.storyboard instantiateViewControllerWithIdentifier:@"tabBarController2"];
然后更改显示的控制器。
(未测试,只是一些想法......)
【讨论】:
您可以通过检查此条件将 IBAction 添加到您的按钮并实例化所需的控制器。
ViewController *viewController = nil;
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
YourViewController *viewController = nil;
if ([userManager isLoggedIn]) {
viewController = (YourViewController *)[storyboard instantiateViewControllerWithIdentifier:@"LoggedInViewControllerIdentifier"];
} else {
viewController = (YourViewController *)[storyboard instantiateViewControllerWithIdentifier:@"NotLoggedInViewControllerIdentifier"];
}
[self.navigationController pushViewController:viewController animated:YES];
在您的故事板中,您必须在身份检查器中设置故事板 ID
编辑
如果您没有使用 navigationController 来路由到正确的记录/未记录控制器,那么您可以这样做:
MyAppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
[appDelegate.transitionController transitionToViewController:viewController
withOptions:UIViewAnimationOptionTransitionFlipFromRight];
【讨论】: