iPhone - UINavigationController - animación personalizada con CATransaction

Estoy tratando de crear una categoría para UINavigationController para poder reunir algunas animaciones personalizadas. Me encontré conesta pregunta y me hizo empezar Se me ocurrió lo siguiente para una función 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];
}

No entiendo a qué vista / capa se accede a través de la llamada de subvista. Entonces, si alguien pudiera ayudarme a entender eso, sería útil. Parece estar afectando cualquier vista que esté por aparecer en la pantalla.

Peromi pregunta principal es que estoy tratando de crear un pop que "deshaga" la función anterior. Para mayor claridad, digamos que tengo dos vistas, A y B. A es la primera vista que se muestra en la pantalla. La función anterior, se moverá en B sin empujar A hacia afuera. Al igual que lo haría una vista modal. Pero la siguiente función desliza A hacia atrás sobre B, en lugar de deslizar B hacia arriba y dejar A en su 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];
}

No quiero usar una vista modal y prefiero no usar bloques de animación personalizados para cambiar el marco de las vistas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta