已解决:
用户登录/注册后,使用以下代码转换到主 Storyboard...
UIWindow* window = [[UIApplication sharedApplication] keyWindow];
window.rootViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateInitialViewController];
我有以下 UINavigationController 流程来处理登录...在 tabbarcontroller 转到作为 viewcontroller 根的 uinavigationcontroller 之后的顶部 segue。
当用户已经登录时,会执行“this segue works”,这样用户就不必在登录屏幕上登录。这完美无缺。我遇到的问题是当用户必须登录时......从登录/注册屏幕到登录屏幕的转场工作完美,但是当我从登录屏幕转到标签栏时,会发生以下情况:
这真的不应该发生,因为我的 viewcontroller.m 中有以下代码(调用到这里)
- (void)viewDidLoad {
...
self.navigationItem.title = @"Messages";
self.navigationItem.hidesBackButton = YES;
NSLog(@"gotten to here");
...
}
有谁知道为什么会这样?
最佳答案
我喜欢将我的登录流程与正常的应用流程分开。这意味着我不会将登录屏幕中的 segue 链接到应用程序,但我会在我的 AppDelegate 中处理它:
if ([MyUserHandler sharedHelper].isAuthenticated) {
[self presentMainInterface];
} else {
[self presentWelcomeInterface];
}
第一种方法这样做的地方:
- (void)presentMainInterface
{
self.window.rootViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateInitialViewController];
}
另一个显示登录屏幕:
- (void)presentWelcomeInterface
{
UIViewController* rootController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"loginScreen"];
UINavigationController* navigation = [[UINavigationController alloc] initWithRootViewController:rootController];
self.window.rootViewController = navigation;
}
这样,只有在用户未通过身份验证时才会加载登录屏幕。
关于ios - 登录 ios 的 UINavigationController 流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21594765/