解决了:
用户登录/注册后,使用以下代码转换到主故事板...
UIWindow* window = [[UIApplication sharedApplication] keyWindow];
window.rootViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateInitialViewController];
Run Code Online (Sandbox Code Playgroud)
我有以下UINavigationController流来处理登录... tabbarcontroller进入作为viewcontroller的根的uinavigationcontroller之后的顶部segue.

当用户已经登录时,执行"this segue works",以便用户不必登录登录屏幕.这非常有效.我遇到的问题是当用户必须登录时...从登录/注册屏幕到登录屏幕的segue工作正常,但当我从登录屏幕转到标签栏时,会发生以下情况:

这真的不应该发生,因为我在viewcontroller.m中有以下代码(此处被调用)
- (void)viewDidLoad {
...
self.navigationItem.title = @"Messages";
self.navigationItem.hidesBackButton = YES;
NSLog(@"gotten to here");
...
}
Run Code Online (Sandbox Code Playgroud)
有人知道为什么会这样吗?
我喜欢将我的登录流程与正常的应用程序流程分开.这意味着我没有将登录界面中的segue链接到应用程序,但是我在AppDelegate中处理了这个:
if ([MyUserHandler sharedHelper].isAuthenticated) {
[self presentMainInterface];
} else {
[self presentWelcomeInterface];
}
Run Code Online (Sandbox Code Playgroud)
第一种方法执行此操作:
- (void)presentMainInterface
{
self.window.rootViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateInitialViewController];
}
Run Code Online (Sandbox Code Playgroud)
另一个呈现登录屏幕:
- (void)presentWelcomeInterface
{
UIViewController* rootController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"loginScreen"];
UINavigationController* navigation = [[UINavigationController alloc] initWithRootViewController:rootController];
self.window.rootViewController = navigation;
}
Run Code Online (Sandbox Code Playgroud)
这样,只有在未对用户进行身份验证时才会加载登录屏幕.
| 归档时间: |
|
| 查看次数: |
931 次 |
| 最近记录: |