Как я могу использовать "Splash" UIViewController для условного перенаправления на другой контроллер представления? - PullRequest
2 голосов
/ 16 января 2012

У меня есть ViewController "Splash screen", расширяющий UIViewController, установленный как начальный VC приложения в моей раскадровке.Этот контроллер имеет форму входа в систему.

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

Если пользователь не вошел в систему, я хочу, чтобы Splash VC завершил загрузку с отображением форм входа в систему.

Как мне поступить в реализации этого?Могу ли я поместить все эти проверки в методы init?Мне было трудно заставить какой-либо код в методах инициализации splash VC вообще запускаться, по какой-то причине эти методы не вызывают.

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

Предложения?Заранее спасибо.

1 Ответ

4 голосов
/ 16 января 2012

Мой выбор места для размещения этой логики в application didFinishLaunchingWithOptions: делегата приложения. Вот как это будет выглядеть:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{

        //////////////////////////////////////////////
        // 1. do loading data etc. 
        // 2. check whether user is signed in or not
        //////////////////////////////////////////////

        if(already signed in)
        {
            dispatch_sync(dispatch_get_main_queue(), ^{
                [self.window.rootViewController performSegueWithIdentifier:@"segue identifier to home VC" sender:self.window.rootViewController]; 
            });
        }
        else
        {
            dispatch_sync(dispatch_get_main_queue(), ^{
                [self.window.rootViewController performSegueWithIdentifier:@"segue identifier to login VC" sender:self.window.rootViewController];                 
            });
        }            
    });
    return YES;
}

И это моя быстрая раскадровка, чтобы помочь коду. Надеюсь, вы поняли идею.

Storyboard for the splash-login, splash-home

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