2010-03-19 20 views
7

Ich habe eine Ansicht in meiner App, die so ziemlich alles tut, und ich mag es so. Das Problem ist jedoch, dass es 5 oder 6 verschiedene Delegierte implementiert, was ein bisschen chaotisch erscheint.So behandeln Sie mehrere Delegierte

Meine Frage ist, muss der View-Controller alle Delegierten implementieren? Oder gibt es eine Möglichkeit, den Code in verschiedene Dateien zu trennen (ohne eine größere Umstrukturierung oder Neuschreiben)?

Hier alle Delegierten ich Umsetzung:

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

Antwort

12

Kein Problem. Die Lösung ist Objective-C-Kategorien. Sie können dies in einer separaten Quelldatei setzen:

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

Eine nette Konvention ist diese Datei „MyView + UIScrollViewDelegate.m“ zu nennen. Die Methoden, die Sie hier definieren, verhalten sich genauso, als wären sie in "MyView.m" definiert.

Der Name der Kategorie muss nicht mit dem Namen des Protokolls übereinstimmen. Sie können dies mit jedem Methodensatz tun und einen beliebigen Kategorienamen verwenden.

+0

Cool, ich werde das ausprobieren, danke! –

+0

Ich bin daran interessiert, meinen Code aufzuräumen. Müssen Sie auch "MyView + UIScrollViewDelegate.h" haben. Wenn ja, wie sieht es aus? – tiguero

Verwandte Themen