2013-09-21 5 views
0

Попытка показать, что UIPopoverController вылетает в ios 7, пока он работает в ios6 и ранее. Сообщение об ошибкеios7 NSInvalidArgumentException, представляющий UIPopoverController

Нагрузочного приложение из-за неперехваченное исключение «NSInvalidArgumentException», причина: «- [UIPopoverController _commonPresentPopoverFromRect: INview: permittedArrowDirections: анимированный]: Popovers не может быть представлены с точкой зрения, которая не имеет окна. '

На самом деле это правда: self.view.window nil в ios7, но не в ios6.

Код:

UIPopoverController *pop = [[UIPopoverController alloc] initWithContentViewController:aViewCtl]; 
pop.delegate = self; 
[pop presentPopoverFromRect:CGRectMake(aRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

Вид создается (и назначается self.view) программно в методе loadView, в то время как поповер отображается после нажатия кнопки. Любое предложение?

EDIT: похоже, проблема заключается в использовании модального представления, прежде чем показывать всплывающее окно, несмотря на его увольнение. Так или иначе, self.view.window теряется после его представления.

ответ

0

Лучшее решение, которое я нашел, это проверить self.view.window. Если он равен нулю, зарегистрируйте делегат в представлении и дождитесь didMoveToWindow, который вызовет делегата и приступит к созданию и отображению popover.

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