声明两个不同的代表。最好的方法,永远不要实例化同一个委托两次,因为它最终会在你的代码中发生奇怪的 juju。
在你的 UIImagePickerController.h 中写:
#pragma mark - Protocols advance declarations
@protocol imageTypeADelegate
@required
-(void) takeImageOfTypeA:(id)object;
@end
#pragma mark - Protocols advance declarations
@protocol imageTypeBDelegate
@required
-(void) takeImageOfTypeB:(id)object;
@end
将它们添加到您的财产声明中
#pragma mark - Property declarations
@property (assign) id <imageTypeADelegate> typeADelegate;
@property (assign) id <imageTypeADelegate> typeBDelegate;
然后你在你的 .m 文件中添加:
#pragma mark - Protocols
-(void) pressedButtonToTakeImageOfTypeA:(id)sender;
{
[[self _typeADelegate] takeImageOfTypeA:(id)object];
}
-(void) pressedButtonToTakeImageOfTypeB:(id)sender;
{
[[self _typeBDelegate] takeImageOfTypeB:(id)object];
}
然后在您需要他们运行例程的任何课程上,您所要做的就是将其添加到您希望它通知的 .h
#import "UIImagePickerController.h"
@interface OtherViewController : UIViewController <imageTypeADelegate, imageTypeBDelegate>
在你的 .m 某处
-(void) takeImageOfTypeA:(id)object;
{
// Do something
}
-(void) takeImageOfTypeA:(id)object;
{
// Do something
}
/~行尾