我正在处理的应用程序需要实现一个工作流程,以允许用户在表单中输入信息。我没有使用滚动视图,而是计划将其分解为一组独立的视图控制器,这些控制器将由导航控制器管理。我首先在故事板中布置所有表单片段,然后开始连接表单不同部分的所有推送和展开段。
我的问题是,如何使用所有这些推送和展开segue比简单地使用我的导航控制器的pushViewController和popToViewController方法,并完全跳过故事板?内存管理或性能方面有什么不同吗?在设计和可维护性方面,不仅仅使用push和pop是更好的做法吗?我无法在解决此问题的文档中找到任何内容。
答案 0 :(得分:3)
他们所做的事情基本上没有区别。使用unwinds的一件好事是,你可以将数据传递回你正在解开的控制器。如果使用pop方法,则必须创建委托协议才能执行此操作。但其中很多都是主观的。您可以使用哪种方式更舒适。我喜欢使用故事板,因为它可以很容易地看到控制器之间的关系。当你在一个大型团队工作时,使用故事板可能是一个问题(所以我已经听说过),这是另一个考虑因素。
答案 1 :(得分:0)
这是一个很好的问题。
在我的第一个iOS项目中,我在线阅读了教程并使用了storyboard segues等。在我的第二个iOS项目中,我废弃了它,只是推送和弹出视图控制器。
我实际上发现它更干净,因为使用故事板方式,您必须致电performSegueWithIdentifier
,然后您可以通过与prepareForSegue
同步来准备接收视图控制器。为什么在准备视图控制器并将其全部放在一个位置时呢?
此外,它将视图控制器与转换分离。它打开了一切,允许更多功能......更快速的发展。
所以我对此事的看法就是推送和弹出视图控制器。也许有人会让我显得愚蠢,但我只是使用这种方法取得了很大的成功。
答案 2 :(得分:0)
在这种情况下
(NAV_A-根视图控制器-VC1)-模态呈现-(NAV_B-根视图控制器-VC2-推送-VC3)
如果您确实在VC3上弹出,则将始终到达VC2,即查看其正下方的控制器。 展开后,您可以执行以上操作,一口气跳回VC1 。
展开可以将您带回到视图控制器层次结构中您想要但不弹出的任何位置。