在CameraController.h
添加这些行:
@protocol CameraControllerDelegate <NSObject>
- (void)didFinishCapturingImage:(UIImage*)image;
@end
和CameraController
类添加属性(在CameraController.h
)
@property (nonatomic, strong) id<CameraControllerDelegate> delegate;
在MainController.h
,在接口实现添加协议;像这样:
@interface MainController : NSObject <CameraControllerDelegate>
之前,你现在/推CameraController
从MainController.m
加入这一行:
cameraController.delegate = self;
在MainController.m
实现didFinishCapturingImage
方法。
- (void)didFinishCapturingImage:(UIImage*)image {
//your logic
}
在图像选取器控制器代表,加入这一行:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissViewControllerAnimated:YES completion: Nil];
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
//this will send delegate callback to MainController
[self.delegate didFinishCapturingImage:image];
}
编辑:第二个解决方案:
请在CameraController.h
属性保持MainController
对象的实例:
@property (nonatomic, strong) MainController *mainController;
分配自我CameraController
的实例的属性mainController
在您使用CameraController
:
cameraController.mainController = self;
编辑您openCamera
方法:
- (void) openCamera {
UIImagePickerController *picker = [[UIImagePickerController alloc]init];
picker.delegate = self.mainController; //important line
picker.sourcetype = UIImagePickerContrllerSourceTypeCamera;
[self.mainController presentViewContrller:picker animated:YES completion:nil];
}
并实现以下方法MainController.m
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
//your logic
}
唐忘记包括UIImagePickerControllerDelegate
在MainController.h
。
无需创建协议和实现协议方法..
感谢您的回答,但CameraController没有查看我怎么能叫CameraController使其调用UIImagePicker – RonPelayo
查看编辑后.. –