2010-03-19 7 views
7

J'ai une vue dans mon application qui fait à peu près tout, et j'aime ça de cette façon. Le problème est cependant qu'il met en place 5 ou 6 délégués différents, ce qui semble un peu compliqué.Comment gérer plusieurs délégués

Ma question est, est-ce que le contrôleur de vue doit implémenter tous les délégués? ou est-ce qu'il y a un moyen de séparer le code dans différents fichiers (sans avoir à restructurer ou réécrire)?

est ici tous les délégués J'exécution:

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

Répondre

12

Pas de problème. La solution est les catégories Objective-C. Vous pouvez mettre cela dans un fichier source séparé:

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

Une convention est agréable de nommer ce fichier « MyView + UIScrollViewDelegate.m ». Les méthodes que vous définissez ici se comporteront comme si elles étaient définies dans "MyView.m".

Il n'est pas nécessaire que le nom de la catégorie corresponde au nom du protocole. Vous pouvez le faire avec n'importe quel ensemble de méthodes et utiliser n'importe quel nom de catégorie que vous aimez.

+0

Cool, je vais essayer, merci! –

+0

Cela m'intéresse de nettoyer mon code. Avez-vous besoin d'avoir "MyView + UIScrollViewDelegate.h" aussi. Si oui, à quoi cela ressemble-t-il? – tiguero