如何从一个故事板切换到另一个故事板

时间:2016-10-13 12:54:41

标签: ios objective-c iphone storyboard uistoryboard

我有两个故事板。 一个用于身份验证 另一个是我的应用程序仪表板。

对于身份验证故事板初始化屏幕是loginScreen。 登录成功后我正在加载Dashboard Storyboard。 对于仪表板故事板,初始屏幕是MainViewController。

这里我在DashboardStoryboard中实现了注销。所以现在我想切换回我的身份验证故事板。

这里返回loginScreen。 但我觉得它不适合实施。 如果我有办法做得更好会更有帮助吗?

-(void)logout{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Authentication" bundle: nil];
    LoginViewScreenController *loginViewScreenController = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewScreenController"];
    [self.navigationController pushViewController: loginViewScreenController animated:NO];
}

非常感谢您的反馈。

3 个答案:

答案 0 :(得分:4)

使用segueStoryboard Reference非常简单。请接下来的步骤和截图。

<强>步骤1)

  • 将第一个(主要)故事板中的对象库中的Storyboard Reference拖放。

<强>步骤2)

  • 将源ViewController中的segue添加到Storyboard reference.

<强>步骤3)

  • 选择另一个(第二个)故事板。

  • 参考ID:Second.Storyboard

    中提供的destinationViewControler(第二个视图控制器)的StoryboardID

-(void)logout
{
    UIViewController *aVCObj = [[UIApplication sharedApplication]delegate].window.rootViewController;
    if ([aVCObj isKindOfClass:[UINavigationController class]]) {
        UINavigationController *aNavController = (UINavigationController *)aVCObj;
        [aNavController popToRootViewControllerAnimated:YES];
    }
}

答案 1 :(得分:2)

通过在用户以其他方式登录true时使用NsuserDefaults设置密钥false,并在启动时导航您的应用程序,这是一个诀窍使用presentViewController方法没有动画,因此用户将无法获得任何选项以返回上一个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

答案 2 :(得分:1)

;