在iOS 5 Storyboard中,如何从Popover将新场景推送到原始视图控制器?

时间:2011-10-16 19:21:36

标签: ios xcode uipopovercontroller ios5 storyboard

我正在从一个新的视图控制器创建一个popoverSegue,并希望将第三个视图控制器推送到原始堆栈。这就是我创建应用程序的方式:

  1. 制作新的Single View Application
  2. 选择Use Storyboards
  3. 选择MainStoryboard.storyboard文件。
  4. 选择唯一的视图控制器,将TitleIdentifier更改为initialView,然后选择Editor->Embed In->Navigation Controller
  5. 将两个新的View Controller对象从对象库拖到画布上
  6. 将新视图控制器的TitleIdentifier更改为:popoverViewnewView
  7. 将对象库中的Round Rect Button对象添加到initialViewpopoverView
  8. 将对象库中的Label对象添加到`newView。
  9. 控制点击initialView中的按钮,然后将其拖至popoverView
  10. 从显示的Popover菜单中选择Storyboard Segues选项。
  11. 控制点击popoverView中的按钮,然后拖动到newView
  12. Push菜单中选择Storyboard Segues选项。
  13. 构建&运行。
  14. 单击第一个按钮,弹出窗口,但是当您单击弹出窗口中的按钮时,没有任何反应(它应该推送新视图但不会。)

    想要做的是将其推送到Navigation Controller堆栈,但我不确定如何设置故事板。

    有什么想法吗?

2 个答案:

答案 0 :(得分:6)

您期望UINavigationController层次结构将自身扩展为呈现的弹出窗口。它不会。对于呈现模态视图控制器也是如此。如果您要在self.navigationController中记录popoverView,您会发现它是零。

popoverView嵌入其自己的UINavigationController。请注意,如果您覆盖prepareForSegue:sender:并尝试配置弹出框,则需要从topViewController获取destinationViewController,因为目标现在是UINavigationController的实例。

答案 1 :(得分:1)

听起来应该可行,但如果没有尝试以下方法: 1.单击不起作用的segue并为其指定标识符。让我们说它是PopoverToNewSegue。

  1. 在弹出窗口控制器的实现文件中,单击按钮时添加操作。

  2. 该函数应返回void并添加以下行: [self performSegueWithIdentifier:@“PopoverToNewSegue”sender:self];

  3. 这应该让你的赛车运转起来。我注意到segue并不总是像你期望的那样工作,但这个对我有用。但