Отмена пользовательского перехода с помощью раскадровки

У меня есть настраиваемая анимация перехода, которая возникает, когда новый контроллер представления помещается в стек. Однако при открытии контроллера представления, который был представлен с указанным настраиваемым переходом, происходит анимация контроллера навигации по умолчанию (то есть текущий контроллер представления анимируется вправо, в то время как родительский контроллер представления переводится на экран с левого края).

Итак, у меня такой вопрос: есть ли способ написать пользовательскую анимацию всплывающего перехода, которая происходит при извлечении контроллера представления из стека?

Правка (решение):

В итоге я определил собственный переход, аналогичный выбранному ответу. В раскадровке я перетащил настраиваемый переход от контроллера дочернего представления обратно к его родительскому, дал ему идентификатор и недавно записанный обратный переход в качестве его класса. Да, я понимаю, что это практически идентично модальному переходу. Требования клиента вызвали это безумие, поэтому, прежде чем кто-либо будет комментировать, поймите, что я знаю, что в обычных обстоятельствах этого делать не следует.

- (void)perform {
  UIViewController *src = (UIViewController *)self.sourceViewController;
  UIViewController *dest = (UIViewController *)self.destinationViewController;

  [UIView animateWithDuration:0.3 animations:^{
    CGRect f = src.view.frame;
    f.origin.y = f.size.height;
    src.view.frame = f;

  } completion:^(BOOL finished){
    src.view.alpha = 0;
    [src.navigationController popViewControllerAnimated:NO];
  }];
}
14
задан Jacob 16 February 2012 в 19:48
поделиться