我正在尝试在我的iPad应用中显示UIImagePickerControl。起初,调试器告诉我,当我在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 应该有一个窗口,但显然......它没有?
答案 0 :(得分:13)
如果在加载视图之前执行了那段代码,就会发生这种情况,因为self.view
仍为零,因此self.view.window
也是如此。
是否有可能在加载视图之前(在调用-viewDidLoad:
之前)在init方法或其他位置执行此操作?
答案 1 :(得分:2)
这个错误让我感到困惑,但事实证明这是因为我传递给barButtonItem
的{{1}}是一个presentPopoverFromBarButtonItem
项目,是一个真正的按钮。我的用户错误,但只是让人们知道这可以als