复杂的故事板导航

Posted

技术标签:

【中文标题】复杂的故事板导航【英文标题】:Complex storyboard navigation 【发布时间】:2014-05-10 19:16:18 【问题描述】:

我对 ios 非常陌生,但已经被放在一个复杂的应用程序上。我在storyboards、segues、views等上看到的所有教程都非常简单。

我已经能够使用转场来显示视图并返回,但管理层并不关心转场。在浏览一个复杂的应用程序后,用户应该能够直接跳到应用程序的另一部分,就好像用户已经返回两次然后选择了另一个视图,然后又选择了另一个视图。

我只是不知道如何实现这一点。在情节提要编辑器中添加新的直接转场?或者与以编程方式创建的自定义 segue 有关?我需要一些关于方向的提示,比如看什么方法、谷歌什么或高级教程等等。提前致谢。

【问题讨论】:

Use perforfSegue method 如果没有您的 GUI 的完整详细信息,很难发表评论,这取决于用户下一步可以/不能去的地方。但是概括地说,没有理由不能从一个部分跳到另一个部分,但您可能必须小心。您可以做的可能适用的事情是将导航视图控制器具有的视图控制器堆栈交换为另一个堆栈 - 这可能适用于您说“跳转到另一部分”的情况,但没有图表我不能我不说,我怀疑你会得到任何有用的答案。 需要注意的一点是,除了展开之外,您不应该使用任何转场回到以前的控制器。 嗯,它类似于视图 A -> B -> C -> D。一旦用户位于 D,他们需要能够透明地返回 A,然后沿着另一条路径 A - > X -> Y。我们(或管理层)希望用户能够从 D 跳到 Y。我不需要确切的答案,只需要对一般策略的一些想法,这样我就可以正确阅读。跨度> 【参考方案1】:

通常,导航控制器允许在堆栈中单个“弹出”视图控制器。这非常适合主从应用和线性工作流。

当一个视图控制器以类似网络的方式连接到另一个视图控制器时,事情变得难以管理。

如果您想依赖视图控制器堆栈的自动管理,但同时返回多个项目,请查看 unwind segues:What are Unwind segues for and how do you use them? - 答案如图所示真的很好。

如果您可以在圆圈中导航,它会变得更加复杂。本质上,您的导航控制器会将已经实例化的类的新对象放入堆栈中,以保持其面包屑路径一直返回到根视图控制器。

在某些情况下,这是不可取的。您可以使用 UINavigationControllerDelegate 在满足某些条件时从堆栈中删除项目。

假设您有 4 个视图控制器,A--D。可能的连接是:A - B - C - B,D - A。从 D,当你完成后,你想放松到 A。从 C,你可能想在 B 添加一个额外的项目,但是您不想跟踪所有 B-C-B-C-B-C-... 连接。在这些情况下,更改导航控制器历史记录很有用,并且不会破坏“返回”按钮的预期行为。

【讨论】:

谢谢,这真的很有帮助,我没有遇到过 unwind segues,或者至少没有注意到。

以上是关于复杂的故事板导航的主要内容,如果未能解决你的问题,请参考以下文章

在故事板中隐藏导航栏

导航栏从我的故事板项目中消失了

无法转换类型 UINavigationController 的值不在主故事板中导航

swift3中的导航问题,带有没有故事板的.xib文件

故事板应用程序中的导航按钮丢失

iOS - 故事板中的导航控制器