管理堆栈上的导航视图

Posted

技术标签:

【中文标题】管理堆栈上的导航视图【英文标题】:Managing navigation views on the stack 【发布时间】:2012-03-16 19:15:00 【问题描述】:

作为 iPhone 开发的新手,我真的很纠结这个概念。我已经构建了一个应用程序,但它并没有按照应有的方式运行。我有一个 TabBar 应用程序。 secondViewController 本质上是我用来收集日常锻炼信息的表单。我已将此 secondViewController 嵌入到导航控制器中,以便我可以推送到 datePicker 视图并返回日期。我还推送到 pickerView 以获取锻炼类型并返回数据。至少这是预期的过程。我使用 prepareForSegue 来推送选择器视图并返回到 secondViewController,并在每个 segue 之间携带数据。

我发现正在发生的是,我的应用程序似乎以线性方式前进,而不是推送到选择器视图并返回到 secondViewController。更准确地说,它似乎是推送到日期选择器,然后推送到 secondViewController 的新“实例”,然后推送到 pickerView,然后推送到 secondViewController 的另一个新实例。这意味着当我的用户最终触摸保存按钮时,他们必须使用导航栏中的后退按钮才能回到原来的 secondViewController。

[有一张图片要添加,但不能发布,因为我的声誉低于 10 岁 :-( ]

我已经阅读了 Apple 关于管理堆栈和层次结构的文档,但我似乎比其他任何事情都更困惑自己。我也搜索了答案和教程,但是我要么遗漏了一些东西,要么没有明确的解释说明我可以找到它应该如何工作。谁能告诉我如何推送到 pickerView 然后返回,或者至少在最终触摸保存按钮时以编程方式返回到原始的 secondViewController?

【问题讨论】:

如果没有一些代码,你将很难解开困惑...... 谢谢 Caleb,但您想看什么?我的 prepareForSegue 代码或头文件中的内容? 【参考方案1】:

要返回 UINavigation Controller 中的层次结构,您可以使用

[self.navigationController popViewControllerAnimated:YES];

【讨论】:

谢谢,但我在哪里使用它?它是 prepareForSegue 的一部分吗? prepareForSegue 在新的 viewController 被推入堆栈(进入视图)之前使用。因此,可以在您想要关闭/弹出当前视图控制器的任何时候使用 popViewControllerAnimated。例如,您可以在当前可见的 viewControler 中使用它来将其从视图中弹出/从堆栈中弹出。

以上是关于管理堆栈上的导航视图的主要内容,如果未能解决你的问题,请参考以下文章

如何展开到导航堆栈上的第一个视图控制器

MvvMCross 导航回多个视图模型/截断导航堆栈

在导航堆栈中以模态方式呈现视图控制器

iOS 简单视图从导航堆栈错误弹出

如何导航到推送通知上的视图控制器

没有导航控制器堆栈的视图控制器从一个到另一个的动画转换