logoImagina
iconCurso
Te recomendamos nuestro curso de iOS 16
Descubre el curso de iOS 16
Ir al curso
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 *

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

iconImage
Publicado 2024-03-07
Actualizado el 2024-03-21

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 *
iconClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClient