无法从没有窗口的视图中呈现弹出窗口

a11*_*111 53 ipad uipopovercontroller

这个错误表明了什么:

"Popovers cannot be presented from a view which does not have a window."

Mac*_*wia 30

拯救我生命的东西:

if (self.view.window != nil)
    [popoverController presentPopoverFromRect:CGRectMake(44, yCoord, 111, 111) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
Run Code Online (Sandbox Code Playgroud)

通过添加if条件它不再崩溃.我真的没有得到它,因为presentPopoverFromRect函数总是被调用.没有窗口会是零的情况,但无论如何它都是诀窍.

编辑:我有这个代码viewDidAppear.然而在大多数情况下,它足以移动presentPopoverFromRectviewDidAppeardidMoveToWindow,但在我的情况下,由于某种原因,如果条件是必要的.

  • 实际上,这也为我做了伎俩...我迷失了,尝试了解决方案并且它节省了我的一天.如果你测试它,条件是真的,但如果不测试则不然.!我认为写"self.view.window"只是称为"moveToWindow"之类的方法. (8认同)
  • 这实际上是上述问题的真正答案.它应该被标记为正确的. (3认同)

hey*_*you 24

您添加popover的视图必须已经添加到具有"addSubview:"方法的窗口中.

试着等到

- (void) didMoveToWindow
Run Code Online (Sandbox Code Playgroud)

为视图调用然后加载弹出窗口

  • 你可以解释一下吗?我不懂. (18认同)
  • 只需将[popoverController presentPopoverFromRect ...放在didMoveToWindow或viewDidAppear函数内..它在viewDidLoad之后调用 (2认同)