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

时间:2011-06-24 11:08:34

标签: objective-c cocoa-touch ipad uitableview uiview

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

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

这是一个应该传达基本原则的基本示例:Made with the nice Antetype prototyping app

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

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

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

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

任何人都对此有一些意见?

1 个答案:

答案 0 :(得分:6)

视图应该知道如何自己绘制和布置子视图,具体取决于它们的属性,就是这样。

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

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