.nib
: en cada archivo nib
guardamos una pantalla (con su jerarquía de vistas), pero no el controlador, que se crea por códigoloadView
crear la jerarquía de vistas que queremos que contenga (UIView
, UIButton
, lo que sea) y asignar la raíz de la jerarquía de vistas a self.view
.Utilities
y marcar sobre el checkbox Is initial view controller
Ctrl+Arrastrar
entre un elemento cualquiera de un view controller (por ejemplo un botón), que será el de controller de origen, y el controller destino. Se nos dará a elegir el tipo de segue en un menú contextual. Si es un controller de contenido el típico es modal
(o también popover
en iPad). El tipo push
es para controladores de navegación, y el custom
para escribir nuestro propio tipo.Utilities
. Aquí podemos cambiar el tipo y también la transición usada para navegar de una pantalla a otra.prepareForSegue:sender:
del controller origen. Podemos sobreescribir este método para pasarle datos al controller destino. El primer parámetro va a instanciarse al segue y a partir de este podemos obtener una referencia al destino.IBAction
y tener como único parámetro un UIStoryboardSegue *
. Por ejemploCtrl+Arrastrar
entre el elemento de interfaz que debe producir el unwind, y el icono de Exit
que aparece en la parte de arriba.Si intentamos hacer esta operación deCtrl+Arrastrar
sin haber implementado el método anterior, veremos que no tiene efecto
destinationController
, que ahora será el controller al que volvemos. También podemos acceder al controller desde el que volvemos en la propiedad sourceController
.prepareForSegue:sender
, método que podemos sobreescribir si queremos aprovechar para realizar alguna operación antes de volver..xib
, en un momento veremos la diferencia) contiene la jerarquía de vistas asociada a un determinado view controller, pero normalmente no se crea de manera manual, sino visualmente con el Interface Builder. De hecho, el nombre significa “NeXT Interface Builder”, referenciando la famosa plataforma NeXTSTEP de la que hereda y es deudora Cocoa.Open as
> Source code
.cocoa touch class
). Especificaríamos que hereda de UIViewController
y marcaríamos la casilla de Also create XIB File
.sesion1/recursos/
de las plantillas tenemos las imágenes de las tres pioneras: Ada Lovelace, Grace Hopper y Barbara Liskov, que como siempre arrastraremos al images.xcassets
. También tenemos los textos sobre ellas que se mostrarán en las pantallas secundarias.sesion1/recursos/lovelace.txt
Ctrl+Arrastrar
desde el primero de los botones con la imagen de Ada Lovelace hasta la segunda pantalla. En el menú contextual elige el tipo modal
, ya que los otros no funcionarán.transition
. Pon el valor que quieras, salvo partial curl
que puede dar problemas a la hora de volver atrás en el segue.Ctrl+Arrastrar
conecta el botón “atrás” con el icono de “Exit” de la parte superior del controllergit
podemos crear una etiqueta o tag que nos marque la versión actual del proyecto para poder recuperarla luego. No obstante Xcode no nos permite gestionar tags, por lo que, tras asegurarnos de que hemos hecho commit y push de todos los cambios actuales, haríamos desde la terminal (estando dentro del repositorio):v1.0
de las plantillasCtrl+arrastrar
podemos crear un segue desde cada uno de los botones hasta la pantalla. Habrán tres segues que lleguen a la misma, no debería ser problema.retornoDeSecundaria
) ya debería estar en el ViewController.m
UIViewController
. Vamos a cambiarlo por uno propioSecundarioViewController
y haz que sea una subclase de UIViewController
. Deja sin marcar la opción de crear el .XIBUtilities
y en el apartado de Custom class
selecciona como clase la que has creado, SecundarioViewController
SecundarioViewController.h
, en el assistant editor
.*.txt
con los textos al proyecto para que se puedan cargar dinámicamente por código. Pulsa con el botón derecho sobre el proyecto y selecciona Add files to Pioneras
. Selecciona los tres .txt
, que se añadirán al proyecto@property
en el SecundarioViewController
llamada nomFich
de tipo NSString*
Attributes inspector
cambia su identifier
, respectivamente por lovelace
, hopper
y liskov
ViewController
, que es el controlador de la pantalla principal, puedes implementar el prepareForSegue:sender
viewDidLoad
del SecundarioViewController
puedes acceder a la propiedad self.nomFich
, cargar el texto del fichero y mostrarlo en el campo de texto.