2013-10-08 3 views
3

После увольнения камеры. Это дает мне это предупреждение: попытайтесь представить, пока идет презентация!Предупреждение: попытка представить uiimagepickercontroller во время презентации в настоящее время

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

Я не знаю, является ли это большой проблемой.

Подробнее Код:

- (void) viewWillAppear:(BOOL)animated 
{ 
    [self takePicture]; 
} 


- (void) takePicture 
{ 
    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
     [imagePickerController setSourceType:UIImagePickerControllerSourceTypeCamera]; 
    } else 
     [imagePickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 

    imagePickerController.delegate = self; 
    [self presentViewController:imagePickerController animated:YES completion:nil]; 
} 


- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    [self dismissViewControllerAnimated:NO completion:nil]; 
} 

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

Кстати, "dismissModalViewController" устарела.

Fix: ViewWillAppear будет вызываться, когда появится новый вид. Это проблема

+0

Пожалуйста, укажите более подробную информацию в своем вопросе. – Ravi

+0

В документации указано, что вы используете 'rejectModalViewControllerAnimated:', вы были alt + нажмите рядом с ответом. Прочтите документацию. –

+0

@ A-Live 'rejectModalViewControllerAnimated:' устарел в пользу 'rejectViewControllerAnimated: complete:'. Он использует правильный. – Kevin

ответ

8

Вы не должны представлять какой-либо контроллер из viewWillAppear, потому что представление текущего контроллера представления еще не завершено.

Вызов takePicture из viewDidAppear, поскольку viewDidAppear вызывается после завершения презентации контроллера.

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

Надеется, что это поможет.

+2

ViewDidAppear - проблема.Потому что каждый раз, когда я добавляю новое представление для просмотра контроллера, этот метод вызывается. Поэтому я добавил BOOL firstTimeRun, чтобы исправить это. – Bill

+0

** ПОЛНОЕ РЕШЕНИЕ ЗДЕСЬ **, ответ Джона: http://stackoverflow.com/questions/14453001/meaning-of-warning-while-a-presentation-is-in-progress – Fattie

0

Вы, наверное, представили некоторый вид контроллер, как этого

[self presentViewController:someVC animated:YES completion:nil]; 

и до того, как анимация получить завершала ваш метод ниже называется

imagePickerControllerDidCancel 

Вы можете проверить это, изменив его

[self presentViewController:someVC animated:NO completion:nil]; 

уведомление анимация: NO выше.

+0

Единственный VC, представленный ранее, - это UIImagePickerController. Предупреждение отображается после нажатия кнопки возврата в контроллере выбора. @MSK – Bill

+0

покажите нам код, в котором вы представляете UIImagePickerController и другой код. – msk

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

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