Tengo una animación personalizada de segue que se produce cuando se empuja un nuevo controlador de vista a la pila. Sin embargo, al mostrar el controlador de vista que se presentó con dicha transición personalizada, se produce la animación predeterminada del controlador de navegación (es decir, el controlador de vista actual se anima hacia la derecha mientras el controlador de vista principal se traduce en pantalla desde el borde izquierdo).Reversión de Segue personalizada con Storyboarding
Así que mi pregunta es esta: ¿hay alguna manera de escribir una animación de transición de pop personalizada que ocurre cuando se saca un controlador de vista de la pila?
Editar (solución):
que terminó definiendo una costumbre segue similar a la respuesta seleccionada. En el guión gráfico, arrastré una transición personalizada desde el controlador de vista secundaria a su elemento primario, le di un identificador y el segmento inverso recién escrito como su clase. Sí, me doy cuenta de que es prácticamente idéntica a una transición modal. Los requisitos del cliente necesitaban esta locura, así que antes de que alguien comente, comprenda que sé que uno no debería tener que hacerlo en circunstancias normales.
- (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];
}];
}
Así que para ser claro, en realidad está invirtiendo el segue a medida, que está usando en su lugar un segue personalizado independiente para volver? – sobri
Al utilizar un segue looping a sí mismo, ¿no estás creando otra instancia del controlador de vista original innecesariamente? Supongo que nadie se daría cuenta a excepción de un breve blip en un perfil de memoria. :) – qix