2014-02-13 26 views
0

另一个查看打开相机如何从我的MainController.m类调​​用此方法和图像传递给我的MainController在iOS版

CameraController.m

- (void) openCamera { 
     UIImagePickerController *picker = [[UIImagePickerController alloc]init]; 
     picker.delegate = self; 
     picker.sourcetype = UIImagePickerContrllerSourceTypeCamera; 
     [self presentViewContrller:picker animated:YES completion:nil]; 

} 

我仍然是iOS开发的新手,是否可以使用委托?

编辑:CameraController没有笔尖。

回答

2

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> 

之前,你现在/推CameraControllerMainController.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 
} 

唐忘记包括UIImagePickerControllerDelegateMainController.h

无需创建协议和实现协议方法..

+0

感谢您的回答,但CameraController没有查看我怎么能叫CameraController使其调用UIImagePicker – RonPelayo

+0

查看编辑后.. –