UIPopoverController & UIImagePickerControl: «Всплывающие окна не могут быть представлены из представления, у которого нет окна» - PullRequest
12 голосов
/ 24 октября 2010

Я пытаюсь отобразить UIImagePickerControl в своем приложении для iPad.Сначала отладчик сказал мне, что мне нужно поместить его в поповер при работе на iPad.Поэтому я написал следующий код:

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[popover presentPopoverFromRect:CGRectMake(0.0, 0.0, 400.0, 400.0) 
                         inView:self.view
       permittedArrowDirections:UIPopoverArrowDirectionAny 
                       animated:YES];

Однако теперь я получаю следующую ошибку: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Popovers cannot be presented from a view which does not have a window.'

Есть предложения о том, что мне делать?Я знаю, что self.view должно иметь окно, но, видимо ... его нет?

Ответы [ 2 ]

13 голосов
/ 25 октября 2010

Это может произойти, если этот бит кода выполняется перед загрузкой представления, поскольку self.view по-прежнему равен нулю и, следовательно, self.view.window.

Возможно ли, что вы делаете это в методе init или в каком-то другом месте перед загрузкой представления (до вызова -viewDidLoad:)?

2 голосов
/ 20 апреля 2012

Эта ошибка меня озадачила, но оказалось, что это потому, что barButtonItem, который я передавал presentPopoverFromBarButtonItem, был элементом UIBarButtonSystemItemFlexibleSpace и реальной кнопкой.Моя ошибка пользователя, но люди знают, что это может

...