Ios 嵌入视图控制器还是添加子视图更好?
例如,如果我需要一个Ios 嵌入视图控制器还是添加子视图更好?,ios,cocoa-touch,Ios,Cocoa Touch,例如,如果我需要一个UITableView显示在视图中其他内容的下方,那么最好的做法是: 将UITableView添加为子视图,或 添加包含UITableViewController的容器视图 据我所知,两者都能提供相同的用户体验,但我想知道哪种方法被视为最佳实践?iOS的一般规则,尤其是iPhone/iPod touch的外形,是在任何给定时间屏幕上都应该只有一个视图控制器。我能想到的唯一一种情况是,当您有一个内置了大量逻辑的子视图,并且该子视图需要包含在多个其他视图中时,您会想要违反该准
UITableView
显示在视图中其他内容的下方,那么最好的做法是:
- 将
添加为子视图,或UITableView
- 添加包含
的容器视图UITableViewController
据我所知,两者都能提供相同的用户体验,但我想知道哪种方法被视为最佳实践?iOS的一般规则,尤其是iPhone/iPod touch的外形,是在任何给定时间屏幕上都应该只有一个视图控制器。我能想到的唯一一种情况是,当您有一个内置了大量逻辑的子视图,并且该子视图需要包含在多个其他视图中时,您会想要违反该准则。例如,popover应该有自己的视图控制器,因为它可能需要与多个其他视图控制器一起显示
在您的情况下,我强烈建议只将UITableView添加为子视图,除非(1)表视图有许多与父视图控制器无关的逻辑,或者(2)您需要在应用程序的另一部分中显示相同的表视图。您有几个选项:
UITableView
,并使包含的视图控制器成为表视图的数据源和委托UITableView
,并将其他一些类作为表视图的数据源和委托你的问题没有简单的答案。这完全取决于您的需求、数据和应用程序的结构。出于以下原因,我宁愿使用容器视图控制器:
- 它可以在应用程序的另一部分中重用
- 维护对象的单一职责(例如,主视图控制器侧重于显示有关模型的信息,而表视图控制器处理有关模型中关系的信息的显示)
- 使源文件更小,更易于阅读
- 更容易为其构建测试
但最终,它们都是有效的解决方案。每个控制器的每个视图都很容易编写和调试。但是,您可能会创建与同一视图控制器交互的不同模型对象,例如datasource和delegate,它们可能是不同的对象。添加子视图控制器的功能似乎是朝着不同的方向移动。这里有一篇关于这一切的好文章:Android世界已经发生了“一屏一屏”的变化。如果结果更好,iOS世界也会朝这个方向发展,这只是时间的问题。将应用程序分成多个组件总是一件好事。@JamesRichard这很好。谢谢你的链接。谢谢大家的讨论。我想还值得一提的是,使用容器视图还具有支持静态UITableViewCells的额外好处,我认为目前只有UITableViewController中才提供静态UITableViewCells。