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 должен иметь окно, но, видимо... это не так?
Ответы
Ответ 1
Это может произойти, если этот бит кода запускается до загрузки представления, поскольку self.view
по-прежнему равен нулю и поэтому имеет значение self.view.window
.
Возможно ли, что вы делаете это в методе init или в другом месте перед загрузкой представления (до вызова -viewDidLoad:
)?
Ответ 2
Эта ошибка меня сбила с толку, но оказалось, что это потому, что barButtonItem
, в которую я проходил presentPopoverFromBarButtonItem
, был UIBarButtonSystemItemFlexibleSpace
item ant фактической кнопкой. Моя пользовательская ошибка, но так, чтобы люди знали, что это может als