我正在构建一个具有以编程方式构建的视图的应用。也就是说,我从数据库中获取数据,该数据库包含视图中按钮的数量,大小和位置等信息。在某些时候,会有一些代码使用这些数据来实例化新的子视图并进行设置。我的问题是,这段代码应该放在哪里?视图,viewController或其他地方。在我看来,这是关于典型MVC原则的灰色区域。视图是否应该接受数据,然后知道如何使用此数据绘制自己?或者,viewController负责构建所有各种子视图,然后简单地将它们添加到视图中。
思考?感谢。
答案 0 :(得分:1)
我同意这是一个灰色区域。就个人而言,我根据是需要操纵的数据还是显示数据做出类似的决定。例如,显示日期的视图控制器可能需要处理各种日期(即,表示为DMY结构的数据与表示为从某个参考时间的秒计数的日期)为适合于视图的格式,而视图本身可能只能接收一种特定格式(即DMY)并负责显示该格式。这就是我倾向于在两者之间绘制的那种 - 显示数据(视图)与解释数据(控制器)。
在重新配置视图的示例中,我可能会将大部分逻辑放入控制器,因为它涉及解释数据。我会设计视图以接受配置细节,例如要显示的项目数和要使用的布局格式(想想UITableViewCell),但我会设计控制器来解释数据以决定放入多少项和放置什么在视图中的各个字段中(如UITableViewController)。