我正在编写一个相当复杂的 iPad 应用程序 - 我的第一个更大的应用程序。
这个应用有一些自定义的 UIViews 来呈现相当复杂的数据,包括一个表格。这些 View 不会占据整个屏幕,并且随时可能(并且很可能)在屏幕上显示许多 View (尽管只有一个会处于显示表格的“展开”状态)。
这是一个应该传达基本原则的基本示例:
请注意,这些东西不应该出现在弹出窗口中;相反,FamilyViews 展开以显示其详细数据。 (另请注意,这个模型只是为了这个问题而创建的,与我的界面外观几乎没有关系;我知道这不是好的屏幕设计)
我不确定将谁作为这些自定义 View 的委托(delegate)和数据源:
- 为当前屏幕委托(delegate)和数据源创建 ViewController 并不优雅,因为它不仅仅是 VC 主视图的一部分的表格。
- 让 View 本身成为委托(delegate)和数据源对我来说有点奇怪,因为感觉给 View 一个太主动的角色;使其成为半 Controller 。
- 使底层模型对象 成为数据源似乎过于紧密,而且还破坏了 MVC。而且它没有回答谁应该成为代表的问题。
我倾向于让这些“FamilyViews”中的每一个代表和数据源都用于它们自己的表。这些表上的操作必须耦合到 FamilyView 的委托(delegate)(ViewController),但这应该不是问题,不是吗?
有人对此有意见吗?
最佳答案
Views 应该知道如何根据它们的属性绘制自己和布局它们的 subview ,仅此而已。
您绝对应该让 Controller 类成为委托(delegate)而不是 View 本身。
不过,委托(delegate) Controller 不必是显示 View 的 View Controller 。它可以很容易地成为一个完全独立的 Controller 类,只知道如何处理 View 所需的内容。
关于objective-c - 自定义 UIView 作为 UITableView 委托(delegate)和数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6466892/