什么是最佳实践:多个UIViews或多个UIViewControllers

时间:2014-11-24 16:40:11

标签: ios uiview uiviewcontroller view-hierarchy

我打算开发一个包含多个页面的检查列表应用程序。每个页面将显示一个简单的是/否问题列表和一个"下一个"页面底部的按钮。

就应用程序设计而言,我看到了两个选项

  1. 一个UIViewController ,其中包含一整页UIViews (分层,z-index)。从第1页切换到2我将使用sendSubviewToBack

  2. 每页UIViewController 一个。从第1页切换到2我将展示新的ViewController。

  3. 问题:这两种方法的PROS和CONS是什么?我监督的其他任何选项?你的经验和建议是什么?

3 个答案:

答案 0 :(得分:1)

Apple在it's implementation of the same idea中选择了每页一个视图控制器方法。这可能部分是为了最大化通用性 - UIPageViewController的不同用户显然会有不同的需求。但另一个考虑因素是记忆;如果您在多个子视图方法中有几十个页面,那么您将拥有几十个整页子视图,并且这是一种快速的方式,可以使用比您在任何给定时间实际需要的内存更多的内存。 / p>

如果您使用单个视图控制器和多个子视图,请考虑仅在您需要时实例化子视图,并从视图层次结构中删除您不需要的视图。实际上,由于听起来您的所有页面都使用相同的格式(清单),因此很难理解为什么您需要的页面只有一个以上的视图。当用户选择不同的页面时,您只需为视图提供一组新的数据即可。

答案 1 :(得分:0)

假设您知道如何编写好的代码(重用视图/视图控制器),它们应该具有相同的优点和缺点。

赞成UIViewController方法的一位赞成者认为,它很可能会产生更清晰的代码。您还可以使用viewDidLoadviewWillAppearviewDidAppear等视图生命周期事件,这些事件可以让您更清楚地了解正在发生的事情。

答案 2 :(得分:0)

我认为这取决于你将如何对你的观点做些什么。如果两者对数据具有相同的行为,我只使用一个UIViewController。如果你需要做更多不同的治疗,我会使用两个UIViewController

使用两个也可以更容易地实现它们之间的漂亮过渡(由iOS处理)。如果你使用一个,也许你应该使用UIScrollView并在里面添加两个视图并以编程方式滚动。

另一种方法是使用UITableView直接显示一个视图中的所有数据。