Неизвестная ошибка при попытке показать экран входа через контроллер панели вкладок - PullRequest
0 голосов
/ 02 апреля 2012

Мое приложение имеет макет на основе вкладок.

Прежде чем пользователи смогут видеть главные экраны с главного контроллера панели вкладок, они должны сначала войти в систему.

Экраны панели вкладок делают запросы к внешнему 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;
}

Когда я пытаюсь это сделать, экран входа в систему не отображается. Вместо этого загружается первый экран контроллера панели вкладок, и приложение закрывается из-за отсутствия идентификатора сеанса, как указано выше.

Кто-нибудь может посоветовать, почему не загружается экран входа?

1 Ответ

1 голос
/ 02 апреля 2012

Почему бы не поставить логику, чтобы определить, вошел ли кто-то в первый VC?Я делаю этот же процесс в нескольких приложениях, и моя модель состоит в том, чтобы проверить, вошел ли пользователь в систему, когда я пытаюсь загрузить данные (мой собственный метод).Если это не удается, то пользователь отправляется модально представленному LoginVC, у которого есть метод делегата внутри первого VC (этот метод передает обратно созданный объект пользователя).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...