UIPopoverController& UIImagePickerControl:“无法从没有窗口的视图中显示弹出窗口”

时间:2010-10-24 00:39:50

标签: ipad ios uiimagepickercontroller uipopovercontroller

我正在尝试在我的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 应该有一个窗口,但显然......它没有?

2 个答案:

答案 0 :(得分:13)

如果在加载视图之前执行了那段代码,就会发生这种情况,因为self.view仍为零,因此self.view.window也是如此。

是否有可能在加载视图之前(在调用-viewDidLoad:之前)在init方法或其他位置执行此操作?

答案 1 :(得分:2)

这个错误让我感到困惑,但事实证明这是因为我传递给barButtonItem的{​​{1}}是一个presentPopoverFromBarButtonItem项目,是一个真正的按钮。我的用户错误,但只是让人们知道这可以als