Ответ 1
Я мог бы предложить другой подход, который даст вам вашу анимацию. Сначала перейдите к контроллеру theAppScreen
, и если вам нужно, чтобы пользователь зашел в систему, попросите presentViewController
перейти к loginScreen
(вам не нужно анимировать этот шаг, если вы хотите, чтобы он выглядел как он перешел непосредственно на экран входа в систему). Таким образом, когда вы успешно вошли в систему, loginScreen может просто dismissViewControllerAnimated
, и ваша анимация вернется к главному theAppScreen
. (Очевидно, что если вы хотите эффект затухания, не забудьте установить контроллер modalTransitionStyle
на UIModalTransitionStyleCrossDissolve
.)
Если вы умерли, изменив свой rootViewController
, единственный способ, которым я могу это сделать (и мне это не нравится), - это сделать что-то вроде:
MainAppViewController *controller = [[MainAppViewController alloc] initWithNibName:@"MainAppViewController" bundle:nil];
// animate the modal presentation
controller.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self.window.rootViewController presentViewController:controller
animated:YES
completion:^{
// and then get rid of it as a modal
[controller dismissViewControllerAnimated:NO completion:nil];
// and set it as your rootview controller
self.window.rootViewController = controller;
}];
Первый метод кажется мне намного более чистым.