UIPopoverController & UIImagePickerControl:“无法从没有窗口的视图中呈现弹出框”
Posted
技术标签:
【中文标题】UIPopoverController & UIImagePickerControl:“无法从没有窗口的视图中呈现弹出框”【英文标题】:UIPopoverController & UIImagePickerControl: "Popovers cannot be presented from a view which does not have a window" 【发布时间】:2010-10-24 00:39:49 【问题描述】:我正在尝试在我的 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 应该有一个窗口,但显然......它没有?
【问题讨论】:
这也可能是我发现的最快的代码块,可以让快速弹出控制器发生。干得好。 【参考方案1】:如果在加载视图之前执行了那段代码,就会发生这种情况,因为self.view
仍然为零,因此self.view.window
也是如此。
您是否有可能在加载视图之前(在调用 -viewDidLoad:
之前)在 init 方法或其他地方执行此操作?
【讨论】:
很好的调用——我将函数调用移至-viewDidAppear:
,现在它可以正常工作了!【参考方案2】:
这个错误让我感到困惑,但事实证明这是因为我传递给presentPopoverFromBarButtonItem
的barButtonItem
是UIBarButtonSystemItemFlexibleSpace
项目和实际按钮。我的用户错误,但只是让人们知道这也可以
【讨论】:
以上是关于UIPopoverController & UIImagePickerControl:“无法从没有窗口的视图中呈现弹出框”的主要内容,如果未能解决你的问题,请参考以下文章
UIPopoverController 上的 UIPopoverController
当 UIPopoverController 在屏幕上时,无法与带有 UIPopoverController 的 UISearchBar 进行交互