Pasar Datos entre ViewControllers usando StoryBoards y Segues (Video)
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 pasaran por un determinado "segue" que tendrá un identificador, y esto se hará a traves 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.
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, podríais decirme como hacerlo de un Storyboard a otro?
Gracias
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!!!!!!!!!!!!!
Pues lo siento Josu pero de Social Framework no tenemos nada hecho por el momento, pero lo apuntamos para hacer en el futuro algún tutorial sobre ello.
Gracias por tu propuesta.
SL2
Gracias! el unico que me sirvio! para entender esos segue!!! Porque la verdad estaba que me colgaba porque no encontraba algo claro.
De nuevo gracias, y pues es facil cuando se lo explican como lo hizo en el video.
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.
Muchísimas gracias por este tutorial. Además de la utilidad me habeis aclarado muchos conceptos.
Gracias otra vez y 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.zip
Como 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