logoImagina
iconCurso
Te recomendamos nuestro curso de iOS 16
Descubre el curso de iOS 16
Ir al curso

Cómo implementar un Patrón Delegate en iOS | Guía completa

iconImage
Escrito por Equipo de Imagina
Actualizado el 23-05-2024
Duración: 30 min

Implementación del patrón delegate en iOS

En este tutorial, aprenderemos a implementar el patrón delegate en objetos habituales de programación en iOS, como el objeto UITableView. Utilizaremos un controlador como delegate y implementaremos los métodos correspondientes, como tableView:didSelectRowAtIndexPath:.

Te invitamos a consultar la página de nuestro curso de programación en iOS.

Paso 1: Crear un nuevo proyecto

Para empezar, vamos a crear un nuevo proyecto de tipo Single View Application en Xcode. Asegúrate de marcar las casillas de uso de ARC y storyboards.

Paso 2: Crear un nuevo controlador

A continuación, crearemos un nuevo controlador en el proyecto. Como estamos utilizando storyboards, no es necesario crear un archivo XIB separado.

Paso 3: Agregar un View Controller en el storyboard

Ve al storyboard y agrega un nuevo View Controller para representar el controlador que acabamos de crear. Asocia el View Controller con nuestro controlador personalizado.

Paso 4: Conectar los controladores

Para establecer la conexión entre los dos controladores, agrega un botón en el primer controlador y crea un segue de tipo push hacia el segundo controlador. También añade un Navigation Controller desde el menú Editor. No olvides agregar un identificador al segue para usarlo más adelante.

Paso 5: Agregar botones al segundo controlador

En el segundo controlador, agrega tres botones y crea los métodos correspondientes en el archivo .m del controlador:

1(IBAction)firstButton:(id)sender { 2 NSLog(@"First button pressed"); 3} 4 5(IBAction)secondButton:(id)sender { 6 NSLog(@"Second button pressed"); 7} 8 9(IBAction)thirdButton:(id)sender { 10 NSLog(@"Third button pressed"); 11}

Asegúrate de enlazar los botones en el storyboard para que funcionen correctamente.

Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *

Paso 6: Implementar el patrón delegate

Ahora, vamos a implementar el patrón delegate para informar al controlador principal sobre los botones pulsados. En el archivo .h del segundo controlador, añade el siguiente código:

1#import <UIKit/UIKit.h> 2 3@protocol AnotherViewControllerDelegate; 4 5@interface AnotherViewController : UIViewController 6 7@property (assign, nonatomic) id<AnotherViewControllerDelegate> delegate; 8 9@end 10 11@protocol AnotherViewControllerDelegate <NSObject> 12 13(void)anotherViewController:(AnotherViewController *)anotherViewController firstButtonPressed:(id)sender; 14- (void)anotherViewController:(AnotherViewController *)anotherViewController secondButtonPressed:(id)sender; 15 16@optional 17(void)anotherViewController:(AnotherViewController *)anotherViewController thirdButtonPressed:(id)sender; 18 19@end

En este código, declaramos un protocolo llamado AnotherViewControllerDelegate y detallamos los métodos que deben implementarse. También hemos agregado una propiedad para el delegate de este controlador.

Paso 7: Actualizar el controlador principal

En el controlador principal, realiza las siguientes modificaciones en el archivo .h:

1#import <UIKit/UIKit.h> 2#import "AnotherViewController.h" 3 4@interface ViewController : UIViewController <AnotherViewControllerDelegate> 5 6@end

En el archivo .m del controlador principal, añade el método prepareForSegue: y realiza una compilación.

1(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 2 if ([segue.identifier isEqualToString:@"MySegue"]) { 3 ((AnotherViewController *)segue.destinationViewController).delegate = self; 4 } 5}

Paso 8: Implementar los métodos del delegate

Implementa los mét

odos del delegate en el controlador principal para eliminar los warnings. Agrega las siguientes líneas de código:

1(void)anotherViewController:(AnotherViewController *)anotherViewController firstButtonPressed:(id)sender { 2 NSLog(@"First button delegate method"); 3} 4 5(void)anotherViewController:(AnotherViewController *)anotherViewController secondButtonPressed:(id)sender { 6 NSLog(@"Second button delegate method"); 7}

Paso 9: Actualizar los métodos de los botones

Actualiza los métodos de los botones en el segundo controlador de la siguiente manera:

1(IBAction)firstButton:(id)sender { 2 NSLog(@"First button pressed"); 3 [delegate anotherViewController:self firstButtonPressed:sender]; 4} 5 6(IBAction)secondButton:(id)sender { 7 NSLog(@"Second button pressed"); 8 [delegate anotherViewController:self secondButtonPressed:sender]; 9} 10 11(IBAction)thirdButton:(id)sender { 12 NSLog(@"Third button pressed"); 13 [delegate anotherViewController:self thirdButtonPressed:sender]; 14}

Paso 10: Manejar el caso opcional

Si el tercer botón es opcional, debemos realizar una comprobación antes de llamar al método correspondiente. Añade el siguiente código al tercer método del segundo controlador:

1(IBAction)thirdButton:(id)sender { 2 NSLog(@"Third button pressed"); 3 if ([delegate respondsToSelector:@selector(anotherViewController:thirdButtonPressed:)]) { 4 [delegate anotherViewController:self thirdButtonPressed:sender]; 5 } 6}

Con esta comprobación, evitaremos errores en caso de que el método opcional no esté implementado.

¡Listo! Ahora puedes informar a otros controladores sobre la ejecución de tus métodos utilizando el patrón delegate. También puedes pasar objetos y datos al controlador anterior para actualizar la información o la interfaz, si es necesario.

Aprende a programar en iOS

En resumen, la implementación del patrón delegate en iOS es una técnica fundamental para comunicar y coordinar acciones entre controladores. A lo largo de este tutorial, hemos aprendido cómo crear un delegate, establecer la conexión entre controladores y aprovechar al máximo este patrón en el desarrollo de aplicaciones para iOS.

Si estás interesado en profundizar tus conocimientos sobre programación en iOS y explorar más técnicas y conceptos avanzados, te invitamos a consultar nuestro curso de programación en iOS. Con este curso, podrás adquirir las habilidades necesarias para desarrollar aplicaciones increíbles y convertirte en un experto en el mundo de la programación en iOS. ¡No pierdas la oportunidad de llevar tus habilidades al siguiente nivel y explorar todas las posibilidades que ofrece este apasionante campo de la tecnología!

¡Únete a nuestro curso de programación en iOS y desbloquea tu potencial como desarrollador de aplicaciones móviles!

Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *
Tutoriales relacionados
¿Qué es una Aplicación (App)?
Explorando el mundo de las aplicaciones: Una guía comprensiva desde sus fundamentos hasta su impacto en la vida cotidiana y el negocio
Notificaciones Push en tu proyecto Xamarin con Firebase
Aumenta la interacción en tu proyecto Xamarin con Firebase: Tutorial completo de Notificaciones Push. ¡Impulsa tu app ahora!
Tutorial NativeScript: Cómo Crear tu Primera App
¡Domina NativeScript desde cero y crea increíbles apps! Tutorial práctico para principiantes. ¡Entra ahora y desata tu potencial de desarrollo!
Cómo crear un Slider en iOS: Tutorial paso a paso
Deslumbra con estilo: Aprende a crear sliders cautivadores en iOS y lleva tus aplicaciones al siguiente nivel. ¡Haz clic y deslízate hacia el éxito!
Tabla de contenido
Implementación del patrón delegate en iOS
Paso 1: Crear un nuevo proyecto
Paso 2: Crear un nuevo controlador
Paso 3: Agregar un View Controller en el storyboard
Paso 4: Conectar los controladores
Paso 5: Agregar botones al segundo controlador
Paso 6: Implementar el patrón delegate
Paso 7: Actualizar el controlador principal
Paso 8: Implementar los métodos del delegate
Paso 9: Actualizar los métodos de los botones
Paso 10: Manejar el caso opcional
Aprende a programar en iOS
Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *