Ios 执行到可能尚未创建的视图的切换

Ios 执行到可能尚未创建的视图的切换,ios,swift2,Ios,Swift2,我有一个具有4个视图的应用程序,CheckAuthenticationView、HomeView、LoginView和DetailsView 当用户启动应用程序时,加载的第一个视图是CheckAuthenticationView。此视图检查密钥链的登录信息,如果存在,则尝试自动登录用户,如果成功,则转到DetailsView。如果不存在任何信息,它将执行到HomeView的切换,然后用户可以从中继续登录 现在在Details视图中,我有一个按钮,用户可以注销。如果点击,将清除所有登录信息并执行到

我有一个具有4个视图的应用程序,CheckAuthenticationView、HomeView、LoginView和DetailsView

当用户启动应用程序时,加载的第一个视图是CheckAuthenticationView。此视图检查密钥链的登录信息,如果存在,则尝试自动登录用户,如果成功,则转到DetailsView。如果不存在任何信息,它将执行到HomeView的切换,然后用户可以从中继续登录

现在在Details视图中,我有一个按钮,用户可以注销。如果点击,将清除所有登录信息并执行到HomeView的解除(退出)步骤

如果用户未注销但关闭了应用程序(重新启动手机等),CheckAuthenticationView将生成一个成功的结果,这意味着DetailsView将自动加载。如果是这种情况,当我点击logout时,segue不会启动,用户仍保持在DetailsView上

我猜segue不会发生,因为HomeView实际上还没有创建,所以没有什么可以进行segue。有没有办法切换到尚未创建的视图


谢谢

您所说的尚未创建是什么意思?如果尚未在情节提要中创建ViewController或任何类型的视图,则不能切换到不存在的视图。如果您已经创建了它,那么您可以调用:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
UIViewController *homeView = [storyboard instantiateViewControllerWithIdentifier:@"HomeView"];
[self presentViewController:vc animated:YES(or NO) completion:nil];

您好,如果用户注销,我将拨打Swift,self.performsguewithidentifier(“unwindToHome”,发件人:self)。我面临的问题是,如果用户终止并重新启动应用程序,HomeView将被绕过,因为自动登录脚本会将用户直接带到DetailsView。只要目标视图控制器在情节提要中定义(并分配了有效类),并且进入它的segue在sotryboard中命名,
performsgueWithIdentifier()
当时应该在那里创建视图控制器,对吗?不确定。segue被命名,视图控制器被定义为如果我手动执行登录(而不是通过Check视图),那么一切都按预期工作。如果DetailsView是从CheckAuthenticationView加载的,在我点击logout按钮后,所有用户默认值等都会被删除,只是没有segue。您可以在AppDelegate中执行一些操作来检查您的要求是否得到满足,然后将HomeView设置为根视图controller@Tyler,我一直在执行你建议的方法(self.presentViewController)但是我发现这样做多次会增加应用程序中的内存分配。大约10次后,注销/登录应用程序每次都会增加内存。