Pasar Datos entre ViewControllers usando StoryBoards y Segues (Video)
Aprende a pasar dos variables NSString de un ViewController a otro con StoryBoards y segues, usando el método prepareForSegue. Incluye vídeo y proyecto.
Aunque quizás esta no sea la forma correcta de intercambiar datos entre ViewController utilizando los StoryBoards, en este vídeo-tutorial se da una solución a este problema. Que si bien parece fácil, en un principio, no resulta muy intuitivo para la gente que comenzamos con la programación para aplicaciones de iPhone e iPad.
El problema a resolver consiste en: pasar 2 variables del tipo NSString de un ViewController a otro utilizando los StoryBoards. El problema se resuelve poniendo un "segue" (hablando mal y rápido, un segue es un "canuto" entre ViewControllers), y asignando en el primer ViewController los atributos del segundo ViewController (en este caso dos atributos de tipo NSString).
Estos datos se pasarán por un determinado «segue» que tendrá un identificador, y esto se hará a través del siguiente método «prepareForSegue»:
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([[segue identifier] isEqualToString:@"NOMBRE_DEL_SEGUE"]) {
NOMBRE_VIEWCONTROLLER_DESTINO *segundoView = [segue destinationViewController];
segundoView.NOMBRE_ATRIBUTO = VALOR_A_PASAR;
}
}
A continuación se muestra un vídeo de como se ha realizado esta sencilla aplicación de paso de datos entre View utilizando StoryBoards y Segues:
El proyecto de esta aplicación lo podéis descargar AQUI.
«Pasar Datos entre ViewControllers usando StoryBoards y Segues (Video)», de Ricardo Moya en jarroba.com, con licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0. Obra registrada en Safe Creative.

Te puede interesar
Pasar de un ViewController a otro automáticamente (iPhone)
Cambia de un ViewController a otro en iOS sin que el usuario toque nada: un Storyboard ID y un timer que a los dos segundos ejecuta pasarPantalla.
UITableView en Objective-C -Ejemplo- (Video)
Videotutorial para crear tablas dinámicas en iPhone con UITableView en Objective-C, usando UINavigationBar y Segues para volver a la tabla.
Tab Bar Controller en Objective-C -Ejemplo- (Video)
Aprende a usar un Tab Bar Controller en Objective-C y a gestionar cada una de sus vistas por separado, con un vídeo y el código para mostrar fecha y hora.
Collection View (Grids) en Objective-C -Ejemplo- (Video)
Videotutorial para crear un Collection View (UICollectionView) o grid dinámico en iPhone con Objective-C, usando un UINavigationBar y segues entre vistas.
Comentarios (16)
-
una pregunta, existe la posibilidad de enviar datos de un storyboards a otro storyboards??? o tengo que usar un solo storyboards en todo el proyecto
-
Hola ramsesTovar.
En este tutorial explicamos como pasar datos de un storyboard a otro, evidentemente puedes utilizar varios storyboards en tu proyecto.
SL2
-
-
hola bunas, gracias en primer lugar,como podria hacer para añadirle un boton con un «push» a otro view controller?? lo he probado a hacer y me da error, gracias!!
-
Hola para el caso de este tutorial no te va a funcionar con el tipo push, solo te va a funcionar con el tipo modal. Para que te funcione con el tipo push debes de tener un navigationcontroller.
SL2-
Muchísimas gracias por tu rápida respuesta, probe con modal y me funciono asi que MUCHISIMAS GRACIAS AMIGO, tienes algun tutorial de Social Framework y Twitter???
me he guardado tu pagina en favoritos asi que aquí andaré mas de un día para ver tus tutoriales y preguntar dudas, GRACIAS!!!!!!!!!!!!!
-
-
-
hola muy bueno el tutorial tengo un problema quiero pasar datos entre viewcontrollers sin ls segues, es decir q quiero guardar un dato y cuando abra el otro viewcontroller ya este el dato sin usar base de datos, pq despues de q en el otro viewcontroller esten todos los datos q envie de varios viewcontrollers recien agregare todo a la base de datos, por favor me urge
-
Hola Achiles.
Las únicas formas de pasar datos entre vistas son por medio de segues o teniendo los datos en una base de datos (SQL-lite) en la que podrás acceder a los datos desde cualquier vista…
No he entendido bien tu pregunta pero ya te digo que solo hay dos formas de tener los datos en las vistas, «jugando» con los segues o teniendo la base de datos… Creo (sino te he entendido mal) que tendras que crearte una base de datos para hacer lo que supongo que quieres hacer.
Cualquier cosa nos cuentas.
SL2
-
-
Hola Jesus, Gracias por el comentario.
Como anotación decirte que si de una vista puedes pasar a otras 2 o mas vistas y quieres pasarle datos a ellas, debes de poner nobres diferentes a los segues, de ahi que necesites la sentencia «if» para identificar el nombre del segue.
Cualquier otra duda o sugerencia para hacer otro tutorial nos dices.
SL2 -
Me ha servido justo para lo que estaba buscando. Muy bien explicado y muchas gracias por la aportación.
Como opcional, si como yo hay varios sitios desde la primera view en la que pasas a la segunda view, le quito el nombre del segue y en el prepareForSegue quito el if. Supongo que será cuestión de gustos y necesidades.
Un saludo. -
Hola Redpitiusa.
Bueno lo primero decirte que nos hemos dado cuenta que el enlace de descarga que tenemos puesto en la web no funciona, asique te dejo en el siguiente enlace el proyecto que se realizo en el tutorial:
https://dl.dropbox.com/u/3136857/PasarDatosEntreViewControllers.zipComo podras observar en el código que te he pasado puedes pasar a traves de los segues todos los datos que quieras ya que al fin y al cabo funciona como un «canuto» de datos entre segues. En el caso del ejemplo se le pasan dos variable de tipo String (bueno NSString) que estan declaradas en la segunda vista pero le puedes pasar lo que quieras, enteros, float, arrays, objetos, arrays de objeto, etc.
Sino he entendido mal lo que quieres haces es que en la primera pantalla introduzcas el sumando y el sumador y el la segunda pantalla te aparezca la información de la operación con el resultado ??? Si es lo puedes hacer de varias formas, una de ellas podria ser declararte dos variables de tipo entero o float que representen al sumando y al sumador y cuando le des al boton hacer que esas dos variables pasen a la segunda vista. Por ejemplo tienes en una variable sumando valor 3 y en la variable sumador valor 2, pues esas dos variables las pasas a la segunda vista. Una vez que estes en la segunda vista puedes por ejemplo en el metodo «viewdidload» cojer el sumando y el sumador y sumarlo asignandolo a una variable y una vez hecho esto ya tienes en la segunda vista las tres variables que podras mostrarlas o hacer lo que quieras con ellas.
Nose si te he respondido a la pregunta, sino es asi vuelve a escribirnos explicandonos el problema con mas detalle e intentamos ayudarte…OK
Gracias por escribir
SL2 -
Hola.. Excelente tutorial y muy bien explicado… Tengo una duda que no puedo aclárame ,aver si me podéis echar una mano.. Continuando con el ejemplo de pasar datos entre vistas, si por ejemplo tenemos un calculo , digamos una suma, y estos dos datos están en la vista uno pero el resultado de esta suma quiero que se vea reflejado en la vista dos luego de pulsar un botón que diga siguiente en vista uno… Como hago para reflejar esta operación en la segunda vista? Gracias de antemano


Deja un comentario