我真的很担心这个问题,如果有人能指出我正确的方向,我会很感激......
我正在构建一个带有Tab栏的iOS应用程序,用于主导航。
用户需要先注册/登录,然后才能看到主屏幕和标签栏。
用户可以使用Facebook连接登录和注册。
该应用与我们自己的API进行通信。
目前......当加载UITabBarController的初始视图时,它将检查当前用户是否存在,如果没有,将显示登录屏幕。
if (sessionID == (id)[NSNull null] || sessionID.length == 0){
NSLog(@"session ID was null");
SHOW_SIGN_IN_SCREEN;
}
#define SHOW_SIGN_IN_SCREEN SignInController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"SignInScreen"];\
[self presentViewController:controller animated:NO completion:nil];
从登录屏幕...用户可以触摸“使用Facebook登录”按钮或创建一个新的帐户,该帐户将转到Sign Up 屏幕。注册屏幕有一个表格供用户填写,或者他们可以点击“注册Facebook”按钮,使用Facebook图表提供的Facebook详细信息创建一个帐户。
Facebook回调全部由应用代表处理,这是我遇到的问题。
API不关心从应用程序发送的用户凭据是针对新用户还是现有用户。在任何一种情况下,API都会返回应用程序的有效会话ID以继续。
API响应后,应用程序委托应该将用户转回主标签栏视图控制器,这是我卡住的地方。
目前,我在AppDelegate中有这个
// app delegate
-(void)segueToMainTabController
{
NSLog(@"segueToMainTabController");
SignInController *controller = (SignInController *)[self.window.rootViewController presentedViewController];
[controller segueToWelcomeScreen];
}
// sign in controller
-(void)segueToWelcomeScreen
{
NSLog(@"segueToWelcomeScreen");
[self performSegueWithIdentifier:@"SignInToMainTabBar" sender:self];
}
正在调用哪个 但是没有执行segue ...
有人可以建议为什么没有执行这个segue?
由于
答案 0 :(得分:0)
我有一个应用程序,我需要在我的AppDelegate中劫持初始视图,所以也许你可以做类似的事情。根据您的情况,也许可以尝试在application:didFinishLaunchingWithOptions:
if (sessionID == (id)[NSNull null] || sessionID.length == 0){
// whatever you need to do to initialize for the login screen
// you should make the login view the initial view in your storyboard
}
else { // hijack the initial view to show the tab bar
UIStoryboard *storyboard = self.window.rootViewController.storyboard;
MyTabViewController *tabViewController = [storyboard instantiateViewControllerWithIdentifier:@"MyTabViewController"];
self.window.rootViewController = tabViewController;
[self.window makeKeyAndVisible];
}
希望有所帮助。