RLDTableViewSwift 0.2.1

RLDTableViewSwift 0.2.1

测试已测试
语言语言 SwiftSwift
许可证 Apache 2
发布日期最新发布2015年6月
SPM支持 SPM

Rafael Lopez Diez 维护。



  • Rafael Lopez Diez

RLDTableViewSwift

UITableView 是 iOS 平台中架构不良解决方案的主要来源之一,它需要一个数据源和代理。SDK 类,如 UITableViewController,强制实行了不良的设计实践,并导致你遇到“巨大的 视图控制器”问题,这完全忽略了单职责原则。

RLDTableViewSwift 是一组可立即使用的 Swift 类,能够帮助您回到正确的发展轨道,帮助您改进应用程序的结构。它们强制实施 SOLID 原则,并调整了模型-视图-表示者模式。

RLDTableViewSwift sample app

Objective-C 版本也可用。

基本原理

RLDTableViewDataSource 和 RLDTableViewDelegate

这些都是可重用组件,用于处理所有表格视图的数据源和代理。有了它们,您就无需一遍又一遍地编写样板代码——它们将使用您的表格视图模型和事件处理器来管理任何 UITableView

它们完全实现了 UITableViewDataSourceUITableViewDelegate 协议,并且在彼此之间保持同步,使您能够以最小的努力获得所有 UITableView 功能

  • 显示自定义
  • 支持可变高度
  • 带有头部和脚部的部分
  • 部分索引标题
  • 单元格附件(揭露天)
  • 单元格高亮显示和选择
  • 编辑、移动和重新排序单元格
  • 缩进
  • 复制和粘贴

表格视图模型

表格视图模型定义了表格视图中视图的状态、外观和感觉以及它们之间的关系。您可以使用提供的通用实现,或者根据您的要求派生它们。

  • RLDTableViewCellModel 用于单元格,
  • RLDTableViewSectionModel 用于表格部分,
  • RLDTableViewSectionAccessoryViewModel 用于部分头部和尾部,以及
  • RLDTableViewModel 用于表格视图本身。

事件处理器

您表格视图中的每个视图(如单元格、部分头部和部分尾部)都应由事件处理器管理。它将接收到表格视图代理的所有视图相关操作,并对视图上的用户生成的活动做出反应。

事件处理器是生命周期短暂的实例化对象,它将在需要时实例化,并在导致其创建的事件被处理或其管理的视图被释放后销毁。它们不应该存储状态(因为我们的模型,对吧?),它们可以自行配置视图外观,或者将视图模型传递给视图,以便自动配置。提供的示例应用使用了最新的方法。

您有两个事件处理器类可以继承

  • RLDTableViewCellEventHandler,用于表格视图单元格,以及
  • RLDTableViewSectionAccessoryViewEventHandler,用于分区标题和页脚。

尽管不是必需的,如果处理视图符合RLDHandledViewProtocol,它将在视图首次显示之前接收到事件处理器。在视图中将保留此事件处理器,以便能够响应视图上的用户生成的事件。此保留的事件处理器将与单元格一起重用,提高性能。

事件处理器提供者

为了按需创建最适合的事件处理器,RLDTableViewDelegate需要一个事件处理器提供者来查找支持特定组合的表格视图、视图和视图模型的事件处理器。

为了使您的事件处理器可在提供者中使用,您必须使用它们的register()类方法进行注册。

确保所有类在需要时准备就绪的最好方法是将其注册在同一位置。您可以使用在应用程序完成启动后一次调用函数的注册类,或者在其首次使用之前注册它们。包含的示例应用使用了这种方法。

RLDTableViewController

此类是UITableViewController的嵌入式替代品。它只需一个表格视图模型即可配置您的表格视图。内部,它使用RLDTableViewDataSourceRLDTableViewDelegateRLDTableViewEventHandlerProvider的默认实现,因此是使用RLDTableViewSwift而不必担心其内部结构的最简单方法,同时获得适当架构的最大好处。

安装

手动

  1. 克隆,将其添加为子模块,或下载
  2. 将所有位于Classes下的文件添加到您的项目中。
  3. 享受吧。

许可

RLDTableViewSwift在Apache License,Version 2.0下提供。请参阅LICENSE文件了解更多信息。

此README是用(GitHub-Flavored) Markdown Editor制作的。