我正在从一个新的视图控制器创建一个popoverSegue,并希望将第三个视图控制器推送到原始堆栈.这就是我创建应用程序的方式:
>创建一个新的单一视图应用程序
>选择使用故事板
>选择MainStoryboard.storyboard文件.
>选择唯一的View Controller,将Title和Identifier更改为initialView,然后选择Editor-> Embed In-> Navigation Controller
>将两个新的View Controller对象从Objects Library拖到画布上
>将新视图控制器的标题和标识符更改为:popoverView和newView.
>将Object Rect对象从Object Library添加到initialView和popoverView.
>将Object库中的Label对象添加到`newView.
>控制单击initialView中的按钮并拖动到popoverView.
>从出现的Storyboard Segues菜单中选择Popover选项.
>控制单击popoverView中的按钮并拖动到newView.
>从Storyboard Segues菜单中选择Push选项.
>构建和扩展跑.
单击第一个按钮,弹出窗口,但是当您单击弹出窗口中的按钮时,没有任何反应(它应该按下新视图但不会.)
我想要做的是将它推到导航控制器堆栈上,但我不确定如何设置故事板.
有任何想法吗?
解决方法
您期望UINavigationController层次结构将其自身扩展为呈现的弹出窗口.它不会.对于呈现模态视图控制器也是如此.如果你要在popoverView中记录self.navigationController,你会发现它是零.
将popoverView嵌入到它自己的UINavigationController中.请记住,如果你要覆盖prepareForSegue:sender:并尝试配置popover,则需要从destinationViewController获取topViewController,因为目标现在是UINavigationController的一个实例.