如何处理多个代理

mac*_*_55 7 iphone delegates uiviewcontroller

我的应用程序中有一个视图可以完成所有操作,我喜欢这样.然而问题是它正在实施5或6个不同的代表,这看起来有点混乱.

我的问题是,视图控制器是否必须实现所有代理?或者有什么方法可以将代码分成不同的文件(无需进行重大的重组或重写)?

这是我正在实施的所有代表:

@interface MyView : UIViewController <UIScrollViewDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIActionSheetDelegate, MFMailComposeViewControllerDelegate>
Run Code Online (Sandbox Code Playgroud)

Tom*_*Tom 12

没问题.解决方案是Objective-C类别.您可以将其放在单独的源文件中:

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

一个很好的约定是将此文件命名为"MyView + UIScrollViewDelegate.m".您在此处定义的方法的行为就像它们在"MyView.m"中定义一样.

不需要类别的名称来匹配协议的名称.您可以使用任何方法集执行此操作,并使用您喜欢的任何类别名称.