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
,它将调用委托并继续创建并显示反弹。
上一篇: ios7 NSInvalidArgumentException presenting UIPopoverController
下一篇: iOS7 UINavigationController pushViewController animation