队
我有两个故事板。 一个用于身份验证 另一个是我的应用程序仪表板。
对于身份验证故事板初始化屏幕是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];
}
非常感谢您的反馈。
答案 0 :(得分:4)
使用segue
和Storyboard Reference
非常简单。请接下来的步骤和截图。
<强>步骤1)强>
Storyboard Reference
拖放。<强>步骤2)强>
Storyboard reference.
<强>步骤3)强>
-(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)
;