2010-03-19 20 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