从模态视图控制器呈现Popover

时间:2010-08-13 21:13:10

标签: ipad modal-dialog uipopovercontroller

我正在尝试从UIModalPresentationPageSheet中的按钮呈现Popover。它崩溃了应用程序并将以下消息返回到控制台:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Popovers cannot be presented from a view which does not have a window.'

我的代码在标准视图控制器中工作正常。正如消息所暗示的那样,有一些模式阻止它显示。我已经对这个主题进行了大量的搜索,但我找不到解决方案。我不得不相信它是可能的,因为我在1Password等应用程序中看到了类似的东西。

非常感谢指针和/或建议。

3 个答案:

答案 0 :(得分:0)

以下代码似乎对我有用,试试这个:

[_pPopOverController presentPopoverFromRect:CGRectMake(0, 0, 768, 900) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];   

答案 1 :(得分:0)

我不知道您使用的是哪个SDK,但5.1版本没有任何异常。我正在显示文本字段中的弹出框,并且以下代码有效:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {

[_popController presentPopoverFromRect:textField.frame
                                inView:textField.superview
              permittedArrowDirections:UIPopoverArrowDirectionAny
                              animated:YES];
return NO;

}

答案 2 :(得分:0)

我敢打赌,问题是您正在传递视图控制器而不是inView参数的视图。它试图获取UIViewController的.window,而UIViewControllers没有UIViews那样。