Подтвердить что ты не робот

UIPopoverController & UIImagePickerControl: "Попутчики не могут быть представлены с точки зрения, которая не имеет окна"

Я пытаюсь отобразить UIImagePickerControl в своем приложении для iPad. Сначала отладчик сказал мне, что мне нужно было поместить его в popover, когда делаете это на 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 должен иметь окно, но, видимо... это не так?

4b9b3361

Ответ 1

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

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

Ответ 2

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