Мое приложение имеет макет на основе вкладок.
Прежде чем пользователи смогут видеть главные экраны с главного контроллера панели вкладок, они должны сначала войти в систему.
Экраны панели вкладок делают запросы к внешнему API и требуют идентификатора сеанса, поэтому субконтроллеры контроллера панели вкладок не могут быть загружены до того, как пользователь войдет в систему (в противном случае приложение вылетает, потому что запросы API выполняются без сеанса ID).
Вот что у меня в делегате приложения:
#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;
}
Когда я пытаюсь это сделать, экран входа в систему не отображается. Вместо этого загружается первый экран контроллера панели вкладок, и приложение закрывается из-за отсутствия идентификатора сеанса, как указано выше.
Кто-нибудь может посоветовать, почему не загружается экран входа?