如何从一个故事板切换到另一个故事板
球队,
我有两个故事板。 一个用于身份validation另一个用于我的应用程序仪表板
对于authentication情节提要初始化屏幕是loginScreen。 login成功后,我正在加载仪表板故事板。 对于仪表板故事板,初始屏幕是MainViewController。
我在这里实现了从DashboardStoryboard中注销。 所以现在我想切换回我的身份validation故事板。
这里回到loginScreen。 但是我没有办法实现。 有没有办法让我做得更好?
-(void)logout{ UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Authentication" bundle: nil]; LoginViewScreenController *oginViewScreenController = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewScreenController"]; [self.navigationController pushViewController: loginViewScreenController animated:NO]; }
您的反馈非常感谢。
这是一个诀窍,通过设置一个关键true
使用NsuserDefaults
当用户login,否则为false
并导航你的应用程序时启动相应地使用presentViewController
方法没有animation,所以用户将不会得到任何选项回去以前的VC。
看下面代码说明上面的句子:
if ([[[NSUserDefaults standardUserDefaults] valueForKey:@"isloggedIn"] isEqualToString:@"true"]) { UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"loginView"]; [self presentViewController:vc animated:NO completion:nil]; }else{ // when logout UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"logoutView"]; [self presentViewController:vc animated:NO completion:nil]; }
如果你需要应用一些效果,当vc出现在presentViewController
方法前的这两行看到:
[vc setModalPresentationStyle:UIModalPresentationCustom]; [vc setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
注意:当用户注销时将该键设置为false 。
使用segue
和Storyboard Reference
很容易。 请按照以下步骤和截图进行操作。
步骤1)
- 从第一个(主)故事板中的对象库拖放
Storyboard Reference
。
第2步)
- 从您的源ViewController添加segue到
Storyboard reference.
步骤-3)
-
select另一个(第二个)故事板。
-
参考ID:您在
Second.Storyboard
可用的destinationViewControler(第二个View Controller)的Second.Storyboard
-(void)logout { UIViewController *aVCObj = [[UIApplication sharedApplication]delegate].window.rootViewController; if ([aVCObj isKindOfClass:[UINavigationController class]]) { UINavigationController *aNavController = (UINavigationController *)aVCObj; [aNavController popToRootViewControllerAnimated:YES]; } }