【问题标题】:performSegueWithIdentifier failing presentPopoverFromBarButtonItem Popovers cannot be presented from a view which does not have a windowperformSegueWithIdentifier 失败 presentPopoverFromBarButtonItem 无法从没有窗口的视图中呈现弹出框
【发布时间】:2012-05-09 05:22:28
【问题描述】:

我有一个主/详细视图,它通过情节提要 segue 打开一个弹出视图。主视图控制器的导航栏上有一个添加按钮,效果很好。

我添加了一种编辑模式,通过在编辑模式下选择表格单元格来调用相同的弹出框。它从 [self performSegueWithIdentifier:@"addQuery" sender:self] 失败;陈述。弹出窗口中的 viewDidLoad 被调用,但之后抛出异常。

我没有调用 presentPopoverFromBarButtonItem - 它似乎来自 performSegueWithIdentifier。

毫无疑问,主视图控制器有一个窗口 - 单击该视图的表格单元格以启动失败的整个过程。

弹出框是导航控制器序列的开始,这可能是问题的一部分。当它真正被按钮调用时,一切正常,只是试图以编程方式调用它失败了。

我已尝试更改 performSegueWithIdentifier 的“发件人”,但无济于事。

我怀疑问题与没有被按钮调用的 segue 有关,我不知道如何伪造它。

有什么想法吗?

【问题讨论】:

标签: ipad ios5 storyboard


【解决方案1】:

ipad popover segue 的工作方式似乎存在一些错误 - 请参阅 Wayne Hartman's blog post

一个简单的测试表明 viewWillAppear 在 vi​​ewDidLoad 之后被调用。

我想我理解这个问题......还没有找到解决方案。

调用方法的顺序是……

  1. [启动转场]
  2. viewDidLoad
  3. prepareForSegue
  4. viewWillAppear

我将我的初始化代码移到 viewWillAppear 方法 - 它工作。

总的来说,我觉得在 viewWillAppear 而不是 viewDidLoad 中初始化可能是个好主意。

【讨论】:

    【解决方案2】:

    我也有类似的问题:

    我正在使用 UIDocumentInteractionController 在 Kaynote 应用程序中打开一个 kaynote 文档。我使用的是相同的代码:

    [docController presentOpenInMenuFromBarButtonItem:_actionBarButtonItem animated:YES];
    

    上面的代码是从 actiobBarButtonItem 打开弹出窗口,其中包含我想用什么应用程序来打开我的文件的选项。如果我从 DetailViewController 得到相同的东西,我会收到与该线程作者相同的错误消息:“无法从没有窗口的视图中呈现弹出框”

    我能够为我的问题找到快速解决方案。我不确定它是否与您的相关。我没有使用“presentOpenInMenuFromBarButtonItem”,而是使用了“presentOpenInMenuFromRect”,仅此而已。您只需要定义弹出框出现的正确位置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多