iPhone - UINavigationController - animação personalizada com CATransaction

Estou tentando criar uma categoria para UINavigationController para que eu possa montar algumas animações personalizadas. Me depareiessa questão e isso me fez começar. Eu vim com o seguinte para uma função push:

- (void)pushViewControllerMoveInFromBottom:(UIViewController *)viewController {
    [CATransaction begin];
    CATransition *transition;
    transition = [CATransition animation];
    transition.type = kCATransitionMoveIn;
    transition.subtype = kCATransitionFromBottom;
    transition.duration = 0.7;

    [CATransaction setValue:(id)kCFBooleanTrue
                     forKey:kCATransactionDisableActions];

    [[[[self.view subviews] objectAtIndex:0] layer] addAnimation:transition forKey:nil];
    [self  pushViewController:viewController animated:YES];
    [CATransaction commit];
}

Não entendo qual visualização / camada está sendo acessada por meio da chamada de subvisão. Então, se alguém pudesse me ajudar a entender isso, isso seria útil. Parece estar afetando qualquer visão que esteja prestes a aparecer na tela.

Masminha pergunta principal é que estou tentando criar um pop que "desfará" a função acima. Para maior clareza, digamos que eu tenha duas visualizações, A e B. A é a primeira visualização exibida na tela. A função acima se moverá em B sem empurrar A para fora. Muito parecido com uma visão modal. Mas a função abaixo desliza A de volta sobre B, em vez de deslizar B para cima e deixar A no lugar.

- (void)popViewControllerMoveInFromTop {
    [CATransaction begin];
    CATransition *transition;
    transition = [CATransition animation];
    transition.type = kCATransitionMoveIn;
    transition.subtype = kCATransitionFromTop;
    transition.duration = 0.7;

    [CATransaction setValue:(id)kCFBooleanTrue
                     forKey:kCATransactionDisableActions];

    [[[[self.view subviews] objectAtIndex:0] layer] addAnimation:transition forKey:nil];
    [self  popViewControllerAnimated:YES];    
    [CATransaction commit];
}

Não quero usar uma exibição modal e prefiro não usar blocos de animação personalizados para alterar o quadro das exibições.

questionAnswers(1)

yourAnswerToTheQuestion