自定义UIView作为UITableView委托和数据源?

fzw*_*zwo 7 cocoa-touch objective-c uitableview uiview ipad

我正在写一个相当复杂的iPad应用 - 我的第一个更大的应用.

这个应用程序有一些自定义UIViews,提供相当复杂的数据,包括一个表.这些视图不占用整个屏幕,并且可以(并且可能会)在屏幕上随时存在许多视图(尽管只有一个将处于显示该表的"扩展"状态).

这是一个应该传达基本原则的基本例子: 使用漂亮的Antetype原型应用程序制作

请注意,这些东西不应该在popovers中; 相反,FamilyViews展开以显示其详细数据.(还请注意,这个模型只是为了这个问题而创建的,与我的界面看起来没什么关系;我知道这不是好的屏幕设计)

我还没决定将这些自定义视图作为委托和数据源的对象:

  • 制作的ViewController当前屏幕的委托和数据源是unelegant,因为它不只是一个表是VC的主视图的一部分.
  • 使View本身成为委托和数据源对我来说似乎有点奇怪,因为感觉就像让视图过于活跃一样; 把它变成一个半控制器.
  • 使底层模型对象成为数据源似乎过于紧密耦合,并且还打破了MVC.它没有回答谁应该成为代表的问题.

我倾向于为他们自己的表制作这些"FamilyViews"委托和数据源中的每一个.对这些表的操作必须耦合到FamilyView的委托(ViewController),但这应该不是问题,是吗?

有人对此有一些意见吗?

Mor*_*ast 6

视图应该知道如何绘制自己并根据它们的属性布局它们的子视图,就是这样.

你绝对应该让控制器类成为委托而不是视图本身.

但是,委托控制器不必是显示视图的视图控制器.它可以很容易地成为一个完全独立的控制器类,只知道如何处理视图所需的内容.