【发布时间】:2012-12-17 00:04:07
【问题描述】:
我正在开发一个应用程序,该应用程序本质上是一系列不同的测试(为简单起见,请考虑 SAT 测试或 Mensa 测试)。每个测试都在不同的 View+View Controller 中实现。
最初我想使用 Storyboards 和 UINavigationControllers 来管理测试的顺序和它们之间的转换,但现在我质疑这种方法的有效性。 UINavigationController 是一个堆栈,而我的导航是单向的(一旦你完成了测试,你就不能回去了)。有没有更好的方法来实现该应用程序?我还能以某种方式利用故事板吗?
【问题讨论】:
-
即使您选择不使用 NavigationController,并且使用故事板,您也需要使用 segues 推送 ViewController。手动执行此操作与使用禁用后退按钮的导航控制器没有什么不同。我没有看到在这里避免使用 NavigationController 的优势。
-
@jhilgert00 为什么他“需要使用 segues 推送 ViewControllers”?使用遏制,这是没有必要的。至于优势,我认为这是因为如果你有很多场景,如果你不需要它们,将它们推入堆栈没有任何好处。只是占用内存。
-
话虽如此(并演示了如何做),我个人并不倾向于为每个问题设置不同的场景。我将有一个场景,以这样一种方式存储我的问题,即我可以使用单个场景来呈现所有问题,或者为每种“类型”问题提供一个场景。 HTML 将是一种格式。另一种方法是拥有一个包含问题的数据库或 plist,可能包含“标题”、“问题”、“图像”和答案等字段。在做这样的应用程序时,问题应该在应用程序的模型中,而不是在代码/故事板中。
-
@Rob,非常感谢您的出色回答(我将进一步研究它,但看起来我会接受它)。根据您的评论,测试不是简单的问题,它们主要是基于活动或谜题,所以 HTML 并不是一个真正的选择(更好,我想一个可以在 HTML5 中实现一些,如果不是全部的话,但是为什么?)
-
@Rob:“正如 Apple 建议的那样,只有在标准控制器都无法完成这项工作时,才应该使用自定义容器。”这正是我想首先使用
UINavigationController的原因。
标签: ios memory-management uinavigationcontroller uistoryboard