我有一个Master / Detail视图,可以通过storyboard segue打开一个弹出视图。主视图控制器的导航栏上有一个添加按钮,工作正常。
我添加了一个编辑模式,通过在编辑模式下选择表格单元格来调用相同的弹出窗口。它失败了[self performSegueWithIdentifier:@“addQuery”sender:self];声明。调用popover中的viewDidLoad,但之后抛出异常。
我没有调用presentPopoverFromBarButtonItem - 它似乎来自performSegueWithIdentifier。
毫无疑问,主视图控制器有一个窗口 - 单击该视图的表格单元格以启动失败的整个过程。
弹出窗口是导航控制器序列的开始,这可能是问题的一部分。当按钮真正调用它时,一切正常,只是尝试以编程方式调用它失败。
我尝试更改performSegueWithIdentifier的“sender”无效。
我怀疑问题与没有被按钮调用的segue有关,而且我不知道如何伪造它。
有什么想法吗?
答案 0 :(得分:1)
ipad popover segue的工作方式似乎存在一些问题 - 请参阅Wayne Hartman's blog post
一个简单的测试显示viewWillAppear是在viewDidLoad之后调用的。
我想我理解这个问题......还没有解决问题。
调用方法的顺序是......
我将初始化代码移到了viewWillAppear方法 - 它运行了。
一般来说,我认为最好在viewWillAppear中初始化而不是viewDidLoad。
答案 1 :(得分:0)
我有一个类似的问题:
我正在使用UIDocumentInteractionController在Kaynote应用程序中打开一个kaynote文档。我使用相同的代码:
[docController presentOpenInMenuFromBarButtonItem:_actionBarButtonItem animated:YES];
上面的代码是从actiobBarButtonItem打开popover,其中包含我想用来打开文件的应用程序选项。如果我从DetailViewController得到同样的东西,我会得到与该帖子的作者相同的错误信息:“弹出窗口不能从没有窗口的视图中呈现”
我能够找到解决问题的快速解决方案。我不确定它是否与你的相关。我没有使用“presentOpenInMenuFromBarButtonItem”,而是使用了“presentOpenInMenuFromRect”,就是这样。你只需要定义popover到apear的正确位置