我正在从一个新的视图控制器创建一个popoverSegue,并希望将第三个视图控制器推送到原始堆栈。这就是我创建应用程序的方式:
Single View Application
Use Storyboards
MainStoryboard.storyboard
文件。Title
和Identifier
更改为initialView
,然后选择Editor->Embed In->Navigation Controller
View Controller
对象从对象库拖到画布上Title
和Identifier
更改为:popoverView
和newView
。Round Rect Button
对象添加到initialView
和popoverView
。Label
对象添加到`newView。initialView
中的按钮,然后将其拖至popoverView
。Popover
菜单中选择Storyboard Segues
选项。popoverView
中的按钮,然后拖动到newView
。Push
菜单中选择Storyboard Segues
选项。单击第一个按钮,弹出窗口,但是当您单击弹出窗口中的按钮时,没有任何反应(它应该推送新视图但不会。)
我想要做的是将其推送到Navigation Controller
堆栈,但我不确定如何设置故事板。
有什么想法吗?
答案 0 :(得分:6)
您期望UINavigationController
层次结构将自身扩展为呈现的弹出窗口。它不会。对于呈现模态视图控制器也是如此。如果您要在self.navigationController
中记录popoverView
,您会发现它是零。
将popoverView
嵌入其自己的UINavigationController
。请注意,如果您覆盖prepareForSegue:sender:
并尝试配置弹出框,则需要从topViewController
获取destinationViewController
,因为目标现在是UINavigationController
的实例。
答案 1 :(得分:1)
听起来应该可行,但如果没有尝试以下方法: 1.单击不起作用的segue并为其指定标识符。让我们说它是PopoverToNewSegue。
在弹出窗口控制器的实现文件中,单击按钮时添加操作。
该函数应返回void并添加以下行: [self performSegueWithIdentifier:@“PopoverToNewSegue”sender:self];
这应该让你的赛车运转起来。我注意到segue并不总是像你期望的那样工作,但这个对我有用。但