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.
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.
A continuación damos nombre a la vista y editamos el archivo .xib para añadirle algo de contenido.
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.
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.
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.
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.
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:
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.
Ahora en el XCode al compilar y ejecutar la aplicación se iniciará en simulador, se nos mostrará la vista principal con el botón y al pulsarlo cargará la sub-vista.