2011-05-02 35 views
5

Tengo un conjunto de vistas de UITableViewController típico. En todas las vistas hay un botón que muestra una vista modelo. En esa vista de Configuración hay un botón. Me gustaría que el botón para cerrar la vista modal y implementar popToRootViewController en el control de navegación de UITableView Controller.¿Cómo hacer popToRootViewController desde dentro de una vista modal?

Descartando la vista modal es fácil:

[self dismissModalViewControllerAnimated:NO]; 

y que funciona bien. Lo he intentado mostrar el UITableViewController principal:

[self.parentViewController.navigationController popToRootViewControllerAnimated:NO]; 

y no ocurre nada.

Probablemente pueda implementar un delegado para que esto ocurra, pero hay bastantes controladores de vista con el mismo botón de Configuración (con más por venir) así que una preferencia para encontrar una solución que no requiera código adicional en cada vista controlador.

¡Muchas gracias!

Respuesta

1

No se pudo encontrar una solución de este tipo, por lo que hemos implementado un protocolo/delegado que funciona muy bien. Solo:

[self.navigationController popToRootViewControllerAnimated:NO]; 

en la llamada de delegado.

1

Trate

[[[[UIApplication sharedApplication].keyWindow] rootViewController] popToRootViewController:YES]; 
+0

Falta el navegadorController (por lo que no se compilará) pero incluso con eso agregado como [[[UIApplication sharedApplication] .keyWindow rootViewController] navigationController] popToRootViewControllerAnimated: YES]; compila pero no hace nada. –

0

Esto funciona para mí

[[self parentViewController] popToRootViewControllerAnimated:NO] 
6

salida la respuesta por rdelmal (https://stackoverflow.com/a/16311935/1395563), esto funcionó como un encanto para mí. Uso este código en una acción en la vista modal.

[(UINavigationController *)self.presentingViewController popToRootViewController:NO]; 
[self dismissViewControllerAnimated:YES completion:nil]; 
1

añadir un método en el archivo de AppDelegate

-(void)GotoRoot{ 
[self.navigationController popToRootViewControllerAnimated:YES];} 

Ahora lo haga en su classs en ur botón de cierre de sesión

[self dismissModalViewControllerAnimated:NO]; 
[(TestAppDelegate *)[[UIApplication sharedApplication] delegate]) GotoRoot]; 

favor revertir su resultado;

Cuestiones relacionadas