Aplicaciones multivista

En este articulo voy a explicar como añadir una vista a un proyecto y gestionarla con un controlador de vista principal. Como ejemplo voy a usar la aplicación que actualmente estamos desarrollando.

MainViewController

En el proyecto tenemos a MainViewController.xib como controlador de la vista principal, que albergará los controladores de las vistas que vayamos añadiendo.  Esta vista principal contiene el menú con el que se cargan las sub-vistas y es siempre visible desde ellas.

En el proyecto vamos a agregar la nueva vista con sus controladores. Para ello hacemos clic derecho sobre el nombre del proyecto y seleccionamos Añadir >

Nuevo archivo… En el menú que se nos presenta seleccionamos la opción “UIViewController subclass” y nos aseguramos de que esté marcada la casilla de “With XIB for user interface” ya que nos creará el archivo .xib que luego editaremos desde el Interface Builder.

Nueva VistaAddFile

 

 

 

 

A continuación damos nombre a la vista y editamos el archivo .xib para añadirle algo de contenido.

AddLibraryViewController

El siguiente paso es instanciar el controlador de la nueva vista en MainViewController.xib, por lo tanto editamos el archivo y mediante las herramientas del Interface Builder arrastramos un controlador de vista a la ventana del documento.

InstanciateViewController

NIB

Queremos que este controlador que hemos arrastrado sea una instancia de la vista que hemos creado. Con el controlador seleccionado y mediante la herramienta Identity Inspector seleccionamos la clase en el desplegable y el NIB.

Una vez hecho esto añadimos el botón en la vista principal que será el que lanzará el evento que cargará nuestra vista. Editamos MainViewController.xib y arrastramos un UIButton.

Ahora que tenemos todos los elementos necesitamos conectarlos al código. MainViewControler se encargará de abrir/cerrar las vistas, por lo tanto necesitamos crear el evento que muestre la vista.

NuevaVisaH

Editamos MainViewController.h y añadimos las siguientes líneas ———————->      En la primera línea hemos declarado la clase del controlador de la sub-vista, en la siguiente línea instanciamos el controlador de vista, en la tercera línea declaramos la instancia como propiedad y en la cuarta declaramos los métodos para cargar la vista.

ConectarControlador

Antes de ponernos con el código del evento que lanzará la vista, vamos a hacer las ultimas conexiones entre el controlador de la vista principal y la instancia de la sub-vista y el botón con el evento. Editamos MainViewController.xib, seleccionamos el controlador de la sub-vista y manteniendo pulsado Ctrl+Botón izquierdo del ratón arrastramos hasta “Files Owner” y seleccionamos el nombre de la instancia anteriormente creada.

Boton-Evento

Para enlazar el botón con el evento editamos el archivo .xib de la sub-vista (ViewFormUser.xib en mi caso), manteniendo pulsado Ctrl+Botón izquierdo del ratón arrastramos hasta Files Owner y seleccionamos el nombre del evento que lanzará la vista.

El último paso es implementar el método que muestra la vista. En MainViewController.m después de la directiva de @implementation utilizamos @synthesize para crear los getters y los setters para las instancias del controlador de sub-vista. A continuación creamos el metodo para cargar la sub-vista:

metodoLoadView

Como en mi aplicación hay varias vistas antes de cargar la sub-vista llamo al método clearView que cierra la vista actual antes de mostrar la sub-vista que queremos cargar.

Finalmente, después de implementar el evento de carga de la sub-vista debemos liberar el controlador de vista en el método dealloc.

zDealloc

Ahora en el XCode al compilar y ejecutar la aplicación se iniciará en simulador, se nos mostrará Multivistala vista principal con el botón y al pulsarlo cargará la sub-vista.

finpng

Share

Deja un comentario