У меня есть viewcontroller с настраиваемым переходом на навигацию с использованием UINavigationControllerDelegate. Все работает отлично, когда вы запускаете анимацию, нажмите кнопку «Назад» и т. Д.animationControllerForOperation не вызывается после того, как приложение переходит на задний план
Однако, если вы нажмете viewcontroller в стек, запустите приложение, верните и затем нажмите назад, метод делегата 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];
}