objective-c - 自定义 UIView 作为 UITableView 委托(delegate)和数据源?

标签 objective-c cocoa-touch ipad uitableview uiview

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

这个应用有一些自定义的 UIViews 来呈现相当复杂的数据,包括一个表格。这些 View 不会占据整个屏幕,并且随时可能(并且很可能)在屏幕上显示许多 View (尽管只有一个会处于显示表格的“展开”状态)。

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

请注意,这些东西不应该出现在弹出窗口中;相反,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/

相关文章:

ios - 为什么 iOS 选择特定的亚洲字体?

objective-c - 星号 * 在 Objective-C 中是什么意思?

iphone - 子类化委托(delegate)?

ios - 将 Mapkit map 以某个国家为中心

ios - 无法读取资源文件夹中的文件-iOS

javascript - 在 UIWebView 中禁用图像选择

iphone - self.tableView reloadData 在单元格标签中堆叠文本,而不是先清理它

iphone - App Store审核多种应用内购买方法

ios - 适用于 iOS 的 KIF 框架 : Can it simulate touch-and-hold gesture?

ios - iPad 屏幕顶部的多个栏