У меня есть контроллер просмотра с пользовательским переходом навигации с использованием UINavigationControllerDelegate. Все отлично работает, когда запускаешь анимацию, нажимаешь кнопку назад и т.д.
Однако, если вы помещаете контроллер представления в стек, запускаете приложение в фоновом режиме, возвращаетесь, а затем нажимаете назад, метод делегата animationControllerForOperation не вызывается, как должно быть. во время отладки я убедился, что self.navigationController.delegate все еще правильно установлен, когда мы возвращаем приложение на передний план, но обратный вызов делегата никогда не выполняется. Есть идеи?
//presenting vc
- (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController
animationControllerForOperation:(UINavigationControllerOperation)operation
fromViewController:(UIViewController*)fromVC
toViewController:(UIViewController*)toVC
{
if (operation == UINavigationControllerOperationPush) {
_animationObject = [LVDashboardExplainerAnimation new];
_animationObject.presenting = YES;
return _animationObject;
} else if (operation == UINavigationControllerOperationPop) {
_animationObject.presenting = NO;
return _animationObject;
}
return nil;
}
//other VC
- (void)headerTapped {
self.navigationController.delegate = _navigationDelegate; //correct object
[self.navigationController popViewControllerAnimated:YES];
}