Controlador de vista push en la vista del controller de vista modal.

Estoy tratando de hacer funcionar una operación simple. Al less parece simple. Ok, lo que me gustaría hacer es empujar una vista (con controller de vista push) desde una vista que se ha presionado con el controller de vista modal.

View1 – (empuje usando el controller de vista modal) -> View2 – (empuje usando el controller de vista push) – View3.

Ahora, estoy haciendo testings, así que estoy usando un button para comenzar la acción. Aquí está el código que uso para empujar desde View2 para ver 3:

//view2.h UIToolbar *bar; UIBarButtonItem *button; UIToolbar *toolbar; } - (IBAction)demissModal:(id)sender; - (IBAction)goView3:(id)sender; @end //view2.m - (IBAction)goView3:(id)sender{ View3 *view_3 = [[View3 alloc] initWithNibName:@"View3" bundle:nil]; [self.navigationController pushViewController:view_3 animated:YES]; } 

Este es el mismo código que utilizo para empujar View1 a View2, y funciona. Pero al presionar View2 a View3, no funciona. ¿Alguna idea de por qué sucede eso? ¡Gracias!

Los controlleres de vista no son controlleres de vista 'modal' o 'push'. Modal o Push describen una transición entre los controlleres de visualización (llamados segues si está utilizando storyboards).

Lo que creo que estás preguntando es cómo presentar un controller de vista de manera modal, y luego presionar otro controller. El truco es cuando presenta el controller de vista # 1, para presentar un controller de navigation con su controller de vista raíz configurado como controller de vista # 1.

 MyViewController *myViewController = [MyViewController alloc] init]; UINavigationController *navController = [UINavigationController alloc] initWithRootViewController:myViewController]; // Presuming a view controller is asking for the modal transition in the first place. [self presentViewController:navController animated:YES completion:nil]; // Now in myViewController, call [self.navigationController pushViewController:secondViewController animated:YES]; 

Esto es lo que parece usar storyboards: introduzca la descripción de la imagen aquí

En primer lugar, no estoy seguro de dónde proviene ese gegant_se.

En segundo lugar, si está presionando view2 desde view1 de la misma manera que está presionando view3 desde view2, no está utilizando un modal.

Cada vez que usa un controller de navigation para empujar un controller de vista, ese controller de vista que acaba de ser empujado tiene una reference al controller de navigation, a través de la propiedad navigationController. Prueba esto:

 [self.navigationController pushViewController:view_3 animated:YES]; 

Prueba esto:

 [self.navigationController pushViewController:view_3 animated:YES]; 

testing este código AlarmList es nombre de vista.

AlarmListScreen * loscr = [[AlarmListScreen alloc] initWithNibName: nil bundle: nil];

[self.navigationController pushViewController: loscr animados: SÍ];

 [loscr release];