2012-01-17 67 views
0

我有两个类:View1和SelectImage。 View1导入SelectImage。 SelectImage用于向用户呈现UIView,允许用户选择如何从设备中抓取照片。轻击按钮在该列表中,然后将消息发送到的以下方法之一...无法获取UIImagePickerController工作

在此代码:

-(void)importFromCamera:(id)sender 
{ 
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
    [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera]; 
    [imagePicker setDelegate:self]; 
    [self presentModalViewController:imagePicker animated:YES]; 
} 

-(void)importFromPhotoLibrary:(id)sender 
{ 
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
    [imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 
    [imagePicker setDelegate:self]; 
    [self presentModalViewController:imagePicker animated:YES]; 
} 

-(void)importFromSavedPhotosAlbum:(id)sender 
{ 
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
    [imagePicker setSourceType:UIImagePickerControllerSourceTypeSavedPhotosAlbum]; 
    UIViewController *viewController = [UIViewController alloc]; 
    [imagePicker setDelegate:self]; 
    [self presentModalViewController:imagePicker animated:YES]; 
} 

编译器会抱怨:

接收机类型“SelectImage”的实例消息不具有选择声明一个 方法“presentModalViewController:动画:”

在的每个实例[self presentModalViewController:imagePicker animated:YES];

不知道我错过了什么。我环顾四周,只能找到能够把所有东西放在同一个班级的例子。

是因为该类是UIView而不是UIViewController?我很确定我有必要的代表协议:。

我试图让这个功能包含在一个类中,以允许其他视图也可以使用它(View2,View3等)。

谢谢!

回答

0

是的。 presentModalViewController是UIViewControllerUIView

注意,在iOS 5中使用的首选方法的方法是:

- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion 

SelectImage类可以有一个代表,你的UIViewController工具。 SelectImage类上的按钮的操作方法将调用您的委托(即UIViewController)。

0

SelectImage应该是一个UIViewController。将其称为SelectImageController,然后view1可以添加它的视图,如[view1 addSubview:self.selectImageController.view];