Вид библиотеки фотографий остается на экране после выбора изображения с помощью UIImagePickerController - PullRequest
4 голосов
/ 24 марта 2009

После того, как я выбрал изображение через интерфейс UIImagePickerController из библиотеки фотографий, представление библиотеки фотографий остается отображенным, даже если я вызвал dismissModelViewControllerAnimated в imagePickerController: didFinishPickingImage: editInfo .

Кто-нибудь видел это? Вот три соответствующих метода, которые я использую:

- (IBAction)choosePictureFromLibrary:(id)sender {
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
        UIImagePickerController* picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.allowsImageEditing = YES;
        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        [self presentModalViewController:picker animated:YES];
        [picker release];
    }
    else {
        UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Error accessing Photo Library" message:@"This device does not support a Photo Library." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        [alert release];
    }
}


- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingImage:(UIImage*)image editingInfo:(NSDictionary*)editingInfo {   
    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Picture picked!" message:@"You picked a picture!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];

    [picker dismissModalViewControllerAnimated:YES];
}


- (void)imagePickerControllerDidCancel:(UIImagePickerController*)picker {   
    [picker dismissModalViewControllerAnimated:YES];
}

Я бы подумал, что вызов imagePickerController: didFinishPickingImage: editInfo полностью отклонит представление библиотеки фотографий, но, похоже, это не так. Есть ли что-то еще, что я должен сделать, чтобы это ушло?

Ответы [ 3 ]

6 голосов
/ 25 марта 2009

Вам нужен доступ к viewController сборщика, а не самого сборщика. Попробуйте эту строку вместо.

[[picker parentViewController] dismissModalViewControllerAnimated:YES];
3 голосов
/ 04 июня 2009

Вы можете просто позвонить

[self dismissModalViewControllerAnimated:YES];

для отклонения любого контроллера модального представления поверх текущего представления.

Это имеет смысл, поскольку вы представляете контроллер представления, вызывая:

[self presentModalViewController:picker animated:YES];
1 голос
/ 06 декабря 2012

Просто обновление ответов на этот

 [self dismissModalViewControllerAnimated:YES];

устарела в iOS 6.0, поэтому вам нужно использовать.

 [self dismissViewControllerAnimated:YES completion:nil];

Не большое изменение, но для тех, кто смотрит на этот вопрос и использует iOS 6.0, им потребуется обновленный ответ.

 [self presentModalViewController:filePicker animated:YES];

также устарел в пользу

 [self presentViewController:filePicker animated:YES completion:nil];
...