ios - 嵌套的 UIViewController 返回 :'ing out too far

标签 ios ios7 uiviewcontroller uistoryboard uistoryboardsegue

我认为我缺少一些基本的东西。我有一个看起来像这样的 Storyboard:

enter image description here

简而言之,我有 3 个自己的 Controller ,分别嵌入到 UINavigationControllers 中。

我将从左到右将这些(我自己的) Controller 称为 1、2 和 3。我对图片进行了注释以显示我是如何连接起来的。我通过将其披露指示器连接到包含#2 的导航 Controller ,在 Controller 1 和 2 之间创建了一个 segue。我通过连接 Controller 并命名它,在 2 和 3 之间创建了 segue。我使用

以编程方式调用该 segue
[self performSegueWithIdentifier:@"OpenValvesSelector" sender:self];

对于 Controller 2 和 3,我将取消和保存导航项与包含 Controller 的退出项连接起来。

问题是,当我打开 3 个,并选择 Save 项目的 Cancel 时,它不仅会关闭该 View ,还会关闭 2,返回我到 Controller 1。我不想要那个。我正在尝试使用 3 来编辑 2 中的一些内容。如何将其返回到 2,而不是 1?

从更广泛的角度来看,我并不完全相信我通过在那里设置 UINavigationController 来做正确的事情。我试着用包含 3 的 UIViewController 来做,但是没有地方可以编辑那个场景的标题/按钮项目。我已经阅读了有关 iOS View Controller Programming Guide 的 Apple Docs,但似乎没有这种级别的详细信息。

最佳答案

当您使用 unwind segue 时,运行时决定“向后”展开多远的方式是首先查看在何处实现了相应的 unwind 方法。因此,如果您在 View Controller 3 中并且想要展开到 View Controller 2,则需要在 View Controller 2 中实现 unwind 方法。

(别担心:您仍然可以从 View Controller 2 放松到 View Controller 1。)

关于ios - 嵌套的 UIViewController 返回 :'ing out too far,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22308772/

相关文章:

iphone - 更改或删除 App Store 中的开发者名称

ios - 如何使用自定义 UITableViewCell 子类进行(自定义)选择

jquery - iOS 7 Safari jquery text() 没有被渲染

ios - 如何更改由 UIActivityViewController 触发的“发送消息”对话框中的颜色?

ios - UIPageViewController 不遵守 iOS 7 中的顶部布局指南

ios - 以编程方式创建的后退按钮没有箭头

ios - 从其他类访问 UI 元素

ios - UICollectionView-尝试删除并重新加载相同的索引路径

iphone - 用于推送 UIViewController 的自定义动画

iOS - MyCustomViewController 类型的 ViewController