1

У меня очень простое приложение, в котором пользователь выбирает UIImageView и нажимает кнопку, чтобы сделать снимок с помощью камеры. Затем изображение возвращается и отображается в поле UIImageView.Как получить копию изображения от UIImagePicker

Однако, поскольку UIImageViews разделяют один и тот же делегат, когда есть уже образ в одном из UIImageViews, и я иду, чтобы сделать снимок, чтобы быть помещены в другой, предыдущий UIImageView заменяется пустым содержимым (т.е. нет образ). Я думаю, это потому, что они делят один и тот же делегат. Есть ли способ, по существу, копировать изображение вместо ссылки на его делегатскую версию?

Вот некоторые примеры кода:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo { 
[picker.parentViewController dismissModalViewControllerAnimated:YES]; 

if (topView == YES) 
{ 
    NSLog(@"topView = %i", topView); 
    imageView.image = image; 
} 
else { 
    NSLog(@"topView = %i", topView); 
    imageView2.image = image; 
} 

}

Спасибо!

Edit: Вот код, который вызывается с помощью IBAction на кнопку нажмет

- (IBAction) pushPick { 
    topView = YES; 
    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    [self presentModalViewController:picker animated:YES]; 
    [picker release]; 
} 
- (IBAction) pushPick2 { 
    topView = NO; 
    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    [self presentModalViewController:picker animated:YES]; 
    [picker release]; 
} 

ответ

2

Что-то вроде этого:

UIImage * newImage = [UIImage imageWithCGImage:[image CGImage]]; 
+0

Спасибо, я уверен, что это правильно, но мое приложение по-прежнему плохо себя ведет. У меня есть две кнопки, которые запускают imagepicker, по одной кнопке для каждого UIImageView. Я нахожу, что если я нажимаю первую кнопку и выбираю изображение, то второе и выбираю изображение, все в порядке, но нажатие другого потом присваивает это изображение в UIView, но очищает другой UIView. Есть идеи? –

+0

Сложно сказать, что я попытаюсь поставить 'NSLog (@" topView =% i ", topView);' вокруг областей кода, основанных на этой переменной. – arul

+0

Кажется, что они дают правильные результаты. Возможно, есть лучший способ связать несколько UIImageViews с UIImagePickers? btw все работает нормально, если я выбираю другой тип UIImagePickerSourceType (например, UIImagePickerControllerSourceTypePhotoLibrary) –

-1

использование

[image copy]; 

Но помните, что вам нужно будет освободить объект на dealloc

+1

UIImage не соответствует NSCopying, поэтому я бы не отправил ему сообщение «copy». – arul