Я не могу найти хороший пример того, как правильно использовать transitionFromViewController:toViewController:duration:options:animations:completion:
.
Это правильно? (предполагая, что я хочу поменять VC другим)
// Assume fromVC and toVC view controllers are defined and fromVC is already added as a child view controller
[self addChildViewController:toVC];
[self transitionFromViewController:fromVC toViewController:toVC duration:0.3 options:UIViewAnimationOptionTransitionCrossDissolve animations:NULL completion:^(BOOL finished) {
[fromVC willMoveToParentViewController:nil];
[fromVC removeFromParentViewController];
[toVC didMoveToParentViewController:self];
}];
В документации не так ясно, когда звонить:
Метод addChildViewController: вызывает вызов метод willMoveToParentViewController:, который должен быть добавлен как ребенок, прежде чем добавлять его, но он не вызывает didMoveToParentViewController:. Контроллер контейнера класс должен вызвать didMoveToParentViewController: дочернего представления контроллер после перехода на новый ребенок завершен или, если нет перехода, сразу после вызова addChildViewController:.
Аналогичным образом, ответственность за управление представлением контейнера несет для вызова метода willMoveToParentViewController: перед вызовом removeFromParentViewController:. метод removeFromParentViewController: вызывает didMoveToParentViewController: для контроллера детского представления.
Другое дело, как вы используете блок анимации в этом случае? Обратите внимание, что в приведенном выше коде я просто положил NULL
. (Я знаком с блоком как таковым, я просто не уверен, что поставить именно в этот)