有2个图像选择器和didFinishPickingMediaWithInfo问题

时间:2012-01-06 13:42:30

标签: iphone ios xcode ipad sdk

我有两个UIImageView,每个都应该显示来自选择器的不同图像,但我可以使用一个委托:- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info ;

这是我的代码:

- (void) importFormLibraryForCover {


    UIImagePickerController *ipc = [[UIImagePickerController alloc]init];
    ipc.delegate = self;
    CGRect rect = CGRectMake(0 ,0, 200,660);

    pop = [[ UIPopoverController alloc]initWithContentViewController:ipc];
    [pop setDelegate:self];
    [pop presentPopoverFromRect:rect inView:self.view  permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
    [ipc release];


}

    - (void) importFormLibraryForAvatar {


//same above code 

}



- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    [picker dismissModalViewControllerAnimated:YES];


       avatarImg.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

// here is the problem :
         coverImg.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];



    }

问题是所有两个imageViews都显示相同的图片,并且在UIImagePickerController类型的对象上找不到属性'标签'

3 个答案:

答案 0 :(得分:2)

你可以让你自己的枚举在.h文件中声明它。

typedef enum _Type
{
    eNone,
    eCover,
    eAvatar

}EType;

还在.h文件中声明变量EType _type;。 在以下方法中,

- (void) importFormLibraryForCover
{
  // set variable
  _type = eCover;
 ...
}

与其他方法类似,请设置其他值。

didFinishPickingMediaWithInfo中,检查_type并按要求处理。

答案 1 :(得分:0)

尝试这样做...在.h文件中为uiimagepickercontroller创建一个对象,并在两种情况下通过更改源类型并在dealloc中释放它来使用它。

答案 2 :(得分:0)

尝试创建NSObject类型的自定义类。

此类将初始化UIImagePicker控制器并创建一个返回图像的委托。

在上面的代码中,创建自定义类的两个实例,并使用任何retain属性变量区分它们。

现在在委托实现中,您将获得图像以及retain属性。根据值,更新您的UI。

希望这会有所帮助。 :)