iOS

Objective C y como usar presentViewController sobre el UIViewController padre.

La situcación es la siguiente:

Tienes un desarrollo de una aplicación para iOS y tienes el siguiente esquema. La aplicación cuenta (todo en el siguiente orden, para este caso, aunque puede variar, aplica igual) con un toolbar, tabbar (3 opciones) y una vista (que cambiará dinamicaente dependiendo cual opción del tabbar eligas) . En este caso NO usaremos un tabbar controller por cuestiones de diseño (y que no tiene nada que ver con este post).
Dados estos 3 elementos principales, las acciones son las siguientes: Cuando des click sobre un tabbar item (item1, item2, item3) tienes que cambiar la vista, es decir, usando la misma vista cambiamos el contenido de la misma. Para esto, debemos tener creadas 3 UIViewControllers (para colocarlos dentro de cada vista seleccionada).

En una de esas vistas es un UITableView que contiene un listado de pelicuas (Nombre y año) las cuales cuando des un “tap” sobre la pelicula te habrá una nueva vista (creada aparte) mostrando detalle de la pelicula. Bien, hasta aqui todo bien. Lo podrias hacer con un

[self presentViewController: nombreUIViewController animated:YES completion: nil]; 

y con eso funcionaría, pero el problema aquí es que el self al que estas haciendo referencia, sería del elemento *view* que definimos anteriormente y no del *view controller padre* lo que ocacionaria que cuando muestres la vista quede activa la vista “principal” y NO  la vista que acabas de mostrar, entonces lo que necesitas es tener acceso al controllador padre, para esto necesitamos importar a nuestro archivo AppDelegate.m  que nos dará la referencia de la aplicación. Entonces en el metodo donde hacemos esta acción agregamos las siguientes 2 líneas:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

[[appDelegate viewController] presentViewController:nombreUIViewController animated:YES completion:nil];

Y con esto ya tenemos acceso al controller principal y podemos navegar libremente con la interfaz que mostramos. Espero halla quedado claro.
La verdad es que soy rebruto para redactar, asi que si no entendieron, sientan libres de preguntar.
Saludos.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s