2015-08-13 2 views
0

Single View контроллер с одним видом изображения:Невозможно уволить imagePickerController

- (void)viewDidAppear:(BOOL)animated{ 
[super viewDidAppear:animated]; 

if (self.imageView.image == nil) { 
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; 
imagePickerController.modalPresentationStyle = UIModalPresentationCurrentContext; 
imagePickerController.delegate = self; 
[self presentViewController:imagePickerController animated:YES completion:nil]; 
} 
else { } 
} 

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 

[picker dismissViewControllerAnimated:YES completion:nil]; 
[self performSelector:@selector(composeEmail:) withObject:image afterDelay:1.0]; 
} 

- (void) imagePickerControllerDidCancel:(UIImagePickerController *)picker 
{ 
[picker dismissViewControllerAnimated:YES completion:nil]; 
} 

Далее следует MFMailComposer но imagePicker не распускать после выбора "Использовать фотографию. ImagePicker, кажется, увольняется, а затем снова появляется.
Вот ссылка на Сущность Для ViewController: https://gist.github.com/FIDELHIMSELF/069609eb5489cf4723a1

я получаю два предупреждения об ошибках:

«Внимание: попытка представить на чьем взгляд не в иерархии окон» и «Снимки изображения, которое не было отображено, приводит к пустым моментальным снимкам. Убедитесь, что ваше представление было просмотрено как минимум один раз перед моментальным снимком или моментальным снимком после обновлений экрана».

+0

Правильно ли вы установили методы делегата? – brandonscript

ответ

0

попробуйте отклонить контроллер вида;

[picker dismissViewControllerAnimated:YES completion:nil]; 

Так, например imagePickerControllerDidCancel метод делегата будет выглядеть;

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{ 
    [picker dismissViewControllerAnimated:YES completion:nil]; 
} 
+0

Спасибо Laky. Это имеет смысл, но сборщик не уволен после выбора кнопки «Использовать фотографию». Вместо этого сборщик исчезает ненадолго, а затем снова появляется. –

+0

@MichaelCastro, потому что вы загружаете анимационный метод imagePickerController on - (void) viewDidAppear: (BOOL), поэтому, как только вы отклоните его, этот метод снова вызван и снова загрузит сборщик. Btw - это установка параметра self.imageView.image, то есть выбранного изображения. Итак, чтобы пройти проверку nil в viewDidAppear? – Laky

+0

Хорошая точка. Я не устанавливаю значение для imageView, и поэтому я думаю, что это может быть ненужным, как и весь условный формат. Должен ли я загружать imagePickerController в методе viewDidLoad? –

Смежные вопросы