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

lna*_*ger 8 xcode storyboard uipopovercontroller ios ios5

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

  1. 创建一个新的 Single View Application
  2. 选择 Use Storyboards
  3. 选择MainStoryboard.storyboard文件.
  4. 选择的唯一视图控制器,改变TitleIdentifierinitialView,然后选择Editor->Embed In->Navigation Controller
  5. 将两个新View Controller对象从"对象库"拖到画布上
  6. 更改TitleIdentifier新的视图控制器来:popoverViewnewView.
  7. Round Rect Button将对象库中的对象添加到initialViewpopoverView.
  8. Label将对象库中的对象添加到`newView.
  9. 控制单击该按钮initialView并拖动到popoverView.
  10. PopoverStoryboard Segues显示的菜单中选择选项.
  11. 控制单击中的按钮popoverView并拖动到newView.
  12. PushStoryboard Segues菜单中选择选项.
  13. 建立和运行.

单击第一个按钮,弹出窗口,但是当您单击弹出窗口中的按钮时,没有任何反应(它应该按下新视图但不会.)

想要做的是将它推入Navigation Controller堆栈,但我不确定如何设置故事板.

有任何想法吗?

Mar*_*ams 6

您期望UINavigationController层次结构将自身扩展为呈现的弹出窗口.它不会.对于呈现模态视图控制器也是如此.如果你登录self.navigationControllerpopoverView,你会看到,它是零.

嵌入popoverView它自己的UINavigationController.请记住,如果您要覆盖prepareForSegue:sender:并尝试配置弹出框,则需要获取topViewControllerfrom,destinationViewController因为目标现在是实例UINavigationController.


小智 1

听起来应该可以,但如果不起作用,请尝试以下操作: 1. 单击不起作用的 segue 并为其指定一个标识符。假设它是 PopoverToNewSegue。

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

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

这应该能让你的segue运行起来。我注意到转场并不总是像你期望的那样工作,但是这个对我来说毫无失败。