UIImagePickerViewerController падает при попытке перейти к сохраненным фотографиям (на iPhone) - PullRequest
4 голосов
/ 14 сентября 2011

У меня есть UIImagePickerViewerController.Он отлично работает, когда я выбираю UIImagePickerControllerSourceTypeCamera.Однако, когда я пытаюсь выбрать UIImagePickerControllerSourceTypeSavedPhotosAlbum, происходит сбой с этой ошибкой:

2011-09-14 01:41:21.779 NG911[378:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Source type must be UIImagePickerControllerSourceTypeCamera'

Вот код, который у меня есть:

        if(![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum] || ![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    {
        UIAlertView *noCameraAlert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                                message:@"This device does not support a photo library"
                                                               delegate:nil
                                                      cancelButtonTitle:@"OK"
                                                      otherButtonTitles:nil, nil];
        [noCameraAlert setTag:2];
        [noCameraAlert show];
        [noCameraAlert release];
        return;
    }

    [picker setSourceType:UIImagePickerControllerSourceTypeSavedPhotosAlbum];
    [picker setShowsCameraControls:YES];
    [picker setAllowsEditing:NO];
    [self presentModalViewController:picker animated:YES];

Любая помощь очень ценится!Заранее спасибо!

Ответы [ 3 ]

7 голосов
/ 14 сентября 2011

Ваша ошибка в этой строке

[picker setShowsCameraControls:YES];

, где выдается исключение, проблема в том, что вы не можете установить showCameraControls в yes, когда используете альбом. Просто прокомментируйте эту строку, и все будет хорошо.

3 голосов
/ 14 сентября 2011

Я думаю, проблема в том, что вы устанавливаете sourceType в UIImagePickerControllerSourceTypeSavedPhotosAlbum независимо от того, какой источник поддерживается.

т.е. Следующая строка должна быть условной;

[picker setSourceType:UIImagePickerControllerSourceTypeSavedPhotosAlbum];

Вместо этого поместите одно или два условия, и, если существует UIImagePickerControllerSourceTypeSavedPhotosAlbum, установите для этого параметра только sourceType. Иначе, если UIImagePickerControllerSourceTypeCamera существует, установите для sourceType этот тип.

Кроме того, я думаю, что [picker setShowsCameraControls: YES]; должно быть сделано только для sourceType UIImagePickerControllerSourceTypeCamera.

Ошибка, которую вы получаете, предполагает, что UIImagePickerControllerSourceTypeSavedPhotosAlbum не поддерживается, поэтому попробуйте решить эту проблему таким образом.

2 голосов
/ 14 сентября 2011

Что вам нужно сделать, это ... Измените условие if на else if if или .. when

if([isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
{

[picker setShowsCameraControls:NO];
}
else
{
[picker setShowsCameraControls:YES];
}
...