【问题标题】:What is best practice when it comes to reusable UITableViewCell's and delegates?对于可重用的 UITableViewCells 和委托,最佳实践是什么?
【发布时间】:2014-02-16 17:13:58
【问题描述】:

我正在构建一个在大多数屏幕上呈现表格视图的应用。它们提供了一些不同的表格视图单元格,但在表格视图的3/5 中显示了一个。此单元格显示视频并为用户提供与视频交互的界面(如评论、标记、删除、播放/暂停等),具有相当大的委托,具有七个方法/功能。

我的问题是:
设置一个单独的控制器是否是最佳实践,该控制器将是我的视图控制器的一个属性,被分配为单元的委托,或者使用已经实现的方法子类UITableViewController?

我看到后者的问题是,我必须实现一种奇怪的方式来处理数据源(设置返回模型的方法,始终确保视频存储在该数组中),而前者似乎只是对标准的 MVC 实践有点奇怪。有什么建议吗?

更新

我开始分解出要使用的数据源来实现单元的协议。我似乎遇到的另一个问题是显示多个单元格,即:

我有一个searchDisplayController,它根据搜索栏的selectedScopeIndex 显示UserCell 和VideoCell。我可以处理此问题的一种方法是为此 tableView 创建一个处理这两种情况的数据源,或者根据对selectedScopeIndex 的更改换出数据源。这两个选项中的任何一个都被看不起吗?交换表视图的数据源是否有效?

【问题讨论】:

  • 您的问题对我来说不是 100% 清楚,如果您在许多地方都有相同的单元格,您可能希望在一个类中外部化您的 UITableViewDataSource,以便可以在任何需要的地方重复使用,你是在问一些方向吗?
  • 我已经提取了数据源,但由于让表格视图单元格播放视频(在某些 Y 值处播放/暂停视图控制器的视图、推送控制器、触发 UI 事件等)

标签: ios uitableview delegation


【解决方案1】:

我通过实现一个UITableViewDataSource 控制器解决了这个问题,该控制器也将处理单元的代表。我能够将数据源上的 7 个方法委托缩短为 3 个方法委托,用于推送新控制器、从数据模型中删除对象以及处理淡化/更新。

当然,我需要传递对UITableView、UIView 和源UIStoryboard 的引用UIViewController,但代码更具可读性和可管理性。

【讨论】:

  • 如果这对您有用,那就太好了。但总的来说,由于数据源是针对整个 UItableView 的,因此在不同表上重用单个单元格不是很灵活。
  • 它建立在我正在使用的数据源类之上,它使用块来设置单元格,只是在子类中实现了单元格的委托
猜你喜欢
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 2019-08-14
  • 2010-10-26
  • 2014-01-04
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
相关资源
最近更新 更多