ios7 NSInvalidArgumentException呈现UIPopoverController

试图显示一个UIPopoverController在ios 7中崩溃,而它在ios6和之前工作。 错误消息是

终止应用程序,由于未捕获异常'NSInvalidArgumentException',原因:' - [UIPopoverController _commonPresentPopoverFromRect:inView:allowedArrowDirections:animated:]:无法从没有窗口的视图中呈现弹出窗口。

事实上,这是真的:self.view.window在ios7中为零,但在ios6中为零。

代码:

UIPopoverController *pop = [[UIPopoverController alloc] initWithContentViewController:aViewCtl];
pop.delegate = self;
[pop presentPopoverFromRect:CGRectMake(aRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

该视图在loadView方法中以编程方式创建(并分配给self.view),而按下按钮后会显示弹出窗口。 任何建议?

编辑:看起来像显示弹出窗口之前使用模态视图的问题,尽管解雇它。 不知怎的,self.view.window在呈现之后会丢失。


我找到的最佳解决方案是检查self.view.window。 如果它是零,那么在视图中注册一个委托并等待didMoveToWindow ,它将调用委托并继续创建并显示反弹。

链接地址: http://www.djcxy.com/p/90327.html

上一篇: ios7 NSInvalidArgumentException presenting UIPopoverController

下一篇: iOS7 UINavigationController pushViewController animation