我正在从新的 View Controller 创建popoverSegue,并希望将第三个 View Controller 插入原始堆栈。这就是我创建应用程序的方式:

  • 创建一个新的Single View Application
  • 选择Use Storyboards
  • 选择MainStoryboard.storyboard文件。
  • 选择唯一的 View Controller ,将TitleIdentifier更改为initialView,然后选择Editor->Embed In->Navigation Controller
  • 将两个新的View Controller对象从对象库拖到 Canvas
  • 将新的View Controller的TitleIdentifier更改为:popoverViewnewView
  • 将对象库中的Round Rect Button对象添加到initialViewpopoverView中。
  • 从对象库中添加一个Label对象到`newView。
  • 控制单击initialView中的按钮并拖动到popoverView
  • 从出现的Popover菜单中选择Storyboard Segues选项。
  • 控制单击popoverView中的按钮,然后拖动到newView
  • Push菜单中选择Storyboard Segues选项。
  • 构建并运行。

  • 单击第一个按钮,弹出窗口出现,但是当您单击弹出窗口中的按钮时,什么也没有发生(它应该按新 View ,但不按。)

    希望要做的是将其插入Navigation Controller堆栈,但不确定如何为此设置 Storyboard。

    有任何想法吗?

    最佳答案

    您期望UINavigationController层次结构将自身扩展为显示的弹出框。不会的呈现模态视图 Controller 也是如此。如果要在self.navigationController中记录popoverView,您会发现它为nil。

    popoverView嵌入到自己的UINavigationController中。请记住,如果要覆盖prepareForSegue:sender:并尝试配置弹出窗口,则需要从topViewController获取destinationViewController,因为目的地现在是UINavigationController的实例。

    10-08 05:58