2010-03-19 14 views
7

Tengo una vista en mi aplicación que hace prácticamente todo, y me gusta de esa manera. Sin embargo, el problema es que está implementando 5 o 6 delegados diferentes, lo que parece un poco desordenado.Cómo manejar múltiples delegados

Mi pregunta es, ¿el controlador de vista tiene que implementar todos los delegados? o ¿hay alguna forma en que pueda separar el código en diferentes archivos (sin tener que hacer una reestructuración importante o reescribir)?

Aquí hay todos los delegados que estoy de ejecución:

@interface MyView : UIViewController <UIScrollViewDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIActionSheetDelegate, MFMailComposeViewControllerDelegate> 

Respuesta

12

No hay problema. La solución es Objective-C categorías. Usted puede poner esto en un archivo fuente por separado:

#import "MyView.h" 
@implementation MyView (UIScrollViewDelegate) 
// scroll view delegate method implementations go here 
@end 

Una convención agradable es nombrar este archivo "MyView + UIScrollViewDelegate.m". Los métodos que defina aquí se comportarán como si estuvieran definidos en "MyView.m".

No es necesario que el nombre de la categoría coincida con el nombre del protocolo. Puede hacer esto con cualquier conjunto de métodos y usar cualquier nombre de categoría que desee.

+0

Genial, voy a probar esto, gracias! –

+0

Estoy interesado en esto para limpiar mi código. ¿Necesitas tener "MyView + UIScrollViewDelegate.h" también? Si es así, ¿cómo se ve? – tiguero

Cuestiones relacionadas