2010-03-19 44 views
7

我在我的應用程序中看到了幾乎所有的東西,而且我喜歡這種方式。但問題在於它實施了5或6個不同的代表,這看起來有點麻煩。如何處理多個代表

我的問題是,視圖控制器是否必須實現所有代表?或者有什麼辦法可以將代碼分離到不同的文件中(而不必進行重大的重構或重寫)?

這裏的所有代表我執行:

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

回答

12

沒問題。解決方案是Objective-C類別。你可以把這個單獨的源文件:

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

一個很好的約定是命名此文件「MyView的+ UIScrollViewDelegate.m」。這裏定義的方法的行爲就像在「MyView.m」中定義的一樣。

不需要類別名稱與協議名稱相匹配。您可以使用任何一組方法來執行此操作,並使用您喜歡的任何類別名稱。

+0

很酷,我會試試看,謝謝! – 2010-03-19 02:26:47

+0

我對此感興趣,以清理我的代碼。你是否也需要有「MyView + UIScrollViewDelegate.h」。如果是,它看起來如何? – tiguero 2012-04-10 17:59:54