Objective c 尝试在我的选项卡栏控制器上显示登录屏幕时出现未知错误

Objective c 尝试在我的选项卡栏控制器上显示登录屏幕时出现未知错误,objective-c,ios,xcode4,Objective C,Ios,Xcode4,我的应用程序具有基于选项卡的布局 在用户可以从主选项卡栏控制器看到主屏幕之前,他们必须先登录 选项卡栏屏幕向外部API发出请求,并需要会话ID,以便在用户登录之前无法加载选项卡栏控制器的子控制器(否则,应用程序会崩溃,因为在没有会话ID的情况下尝试API请求) 以下是我的应用程序代理中的内容: #import "AppDelegate.h" #import "APIRequest.h" #import "SignInController.h" @implementation AppDelegat

我的应用程序具有基于选项卡的布局

在用户可以从主选项卡栏控制器看到主屏幕之前,他们必须先登录

选项卡栏屏幕向外部API发出请求,并需要会话ID,以便在用户登录之前无法加载选项卡栏控制器的子控制器(否则,应用程序会崩溃,因为在没有会话ID的情况下尝试API请求)

以下是我的应用程序代理中的内容:

#import "AppDelegate.h"
#import "APIRequest.h"
#import "SignInController.h"
@implementation AppDelegate

@synthesize window = _window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{    
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:NO];
    // Override point for customization after application launch.

    NSString *sessionID = [[NSUserDefaults standardUserDefaults] stringForKey:UserDefaultsSessionIDKey];
    if (sessionID == (id)[NSNull null] || sessionID.length == 0){
        NSLog(@"session ID was null");

        UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;  
        SignInController *signInController = [tabBarController.storyboard instantiateViewControllerWithIdentifier:@"SignInScreen"];

        [self.window addSubview:signInController.view];
        [self.window makeKeyAndVisible];

        }
    return YES;
}
尝试此操作时,不会显示登录屏幕。相反,tab bar控制器的第一个屏幕被加载,应用程序由于缺少上面提到的会话ID而中止


有人能告诉我为什么没有加载登录屏幕吗?

为什么不把逻辑放在第一个VC中确定是否有人登录?我在几个应用程序中执行相同的过程,我的模型是在我尝试加载数据时检查用户是否登录(我自己的自定义方法)。如果失败,那么用户将被发送到一个modally presented LoginVC,该LoginVC在第一个VC中有一个委托方法(该方法会传回创建的用户对象)。

这通常是最简单的答案,效果最好:/-谢谢