Saltar al contenido

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).

Captura de Xcode con un segue modal con identificador pasarDatos entre una pantalla con Nombre y Apellido y la Segunda View Controller

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.

Ricardo Moya

Me dedico profesionalmente al Machine Learning y al Big Data. Me gusta aprender tecnologías nuevas y explicarlas de la mejor manera posible en esta web.

Te puede interesar

Comentarios (16)

  1. ramsesTovar

    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

    1. Ricardo Moya Jarroba.com

      Hola ramsesTovar.
      En este tutorial explicamos como pasar datos de un storyboard a otro, evidentemente puedes utilizar varios storyboards en tu proyecto.
      SL2

      1. Aitor

        Hola, podríais decirme como hacerlo de un Storyboard a otro?

        Gracias

  2. josu

    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!!

    1. Ricardo Moya Jarroba.com

      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

      1. josu

        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!!!!!!!!!!!!!

        1. Ricardo Moya Jarroba.com en respuesta a josu

          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

  3. Yego

    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.

  4. Achiles

    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

    1. Ricardo Moya Jarroba.com

      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

  5. Ricardo Moya Jarroba.com

    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

  6. Jesus

    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.

  7. UIWebView -iPhone- (Vídeo) | Jarroba

    […] Pasar Datos entre ViewControllers usando StoryBoards y Segues (Video) […]

  8. Eva

    Muchísimas gracias por este tutorial. Además de la utilidad me habeis aclarado muchos conceptos.
    Gracias otra vez y un saludo.

  9. Ricardo Moya Jarroba.com

    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

  10. Redpitiusa

    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


Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.