2012-06-09 4 views
1

Вот набор из моего зрения:UIPopoverController и UIImagePickerController аварии

View Setup

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

-(IBAction) btnReset:(id)sender { 
    [self chooseImage]; 
} 

-(void) chooseImage { 
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { 
     imagepicker = [[UIImagePickerController alloc] init]; 
     imagepicker.allowsEditing = NO; 
     imagepicker.delegate = self; 
     imagepicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
     imagepicker.navigationBar.opaque = true; 


     if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
      popoverController = [[UIPopoverController alloc] initWithContentViewController:imagepicker]; 

      [popoverController presentPopoverFromBarButtonItem:reset permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES]; 

     } else { 
      [self presentModalViewController:imagepicker animated:YES]; 
     } 
    } 
} 

Однако, когда это называется, вид аварии с ошибкой:

'NSInvalidArgumentException', reason: '-[UIPopoverController presentPopoverFromRect:inView:permittedArrowDirections:animated:]: Popovers cannot be presented from a view which does not have a window.'

Что я делаю неправильно? Заранее спасибо.

+0

Что такое сбрасываемая переменная, из которой вы представляете popover? –

+0

Сброс - это имя кнопки – DGund

ответ

0

Похоже, вы пытаетесь создать popover для элемента, который не находится в иерархии представлений. Если этот метод вызывается вашей кнопкой, измените заголовок метода на - (void) selectImage: (id) отправителя и попробуйте представить popover из UIBarButton, который у вас есть на панели инструментов.

Также, если вы используете ARC (что похоже, что вы есть), вы должны держаться за свой UIPopover, иначе он будет выпущен, когда он еще понадобится, см. this stack overflow post. Возможно, вы уже это делаете, но я думал, что подниму его, поскольку я не вижу, как/как вы указали свой popoverController.

+0

UIBarButtonItem IBAction просто вызывает метод selectImage, поэтому все должно быть в порядке. Я не уверен, что код должен быть с точки зрения другого сообщения. Я создал popOver в файле заголовка и синтезировал его свойства. – DGund

+0

Вы посмотрели этот пост? http://stackoverflow.com/questions/3377001/popovers-cannot-be-presented-from-a-view-which-does-not-have-a-window –

+0

Вопрос ниже принятого ответа в вашей ссылке работает лучше всего , Это не идеально, но я заставлю его работать. – DGund

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