测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | Apache 2 |
发布日期最新发布 | 2015年6月 |
SPM支持 SPM | ✗ |
由 Rafael Lopez Diez 维护。
UITableView
是 iOS 平台中架构不良解决方案的主要来源之一,它需要一个数据源和代理。SDK 类,如 UITableViewController
,强制实行了不良的设计实践,并导致你遇到“巨大的 视图控制器”问题,这完全忽略了单职责原则。
RLDTableViewSwift
是一组可立即使用的 Swift 类,能够帮助您回到正确的发展轨道,帮助您改进应用程序的结构。它们强制实施 SOLID 原则,并调整了模型-视图-表示者模式。
Objective-C 版本也可用。
这些都是可重用组件,用于处理所有表格视图的数据源和代理。有了它们,您就无需一遍又一遍地编写样板代码——它们将使用您的表格视图模型和事件处理器来管理任何 UITableView
。
它们完全实现了 UITableViewDataSource
和 UITableViewDelegate
协议,并且在彼此之间保持同步,使您能够以最小的努力获得所有 UITableView
功能
表格视图模型定义了表格视图中视图的状态、外观和感觉以及它们之间的关系。您可以使用提供的通用实现,或者根据您的要求派生它们。
RLDTableViewCellModel
用于单元格,RLDTableViewSectionModel
用于表格部分,RLDTableViewSectionAccessoryViewModel
用于部分头部和尾部,以及RLDTableViewModel
用于表格视图本身。您表格视图中的每个视图(如单元格、部分头部和部分尾部)都应由事件处理器管理。它将接收到表格视图代理的所有视图相关操作,并对视图上的用户生成的活动做出反应。
事件处理器是生命周期短暂的实例化对象,它将在需要时实例化,并在导致其创建的事件被处理或其管理的视图被释放后销毁。它们不应该存储状态(因为我们的模型,对吧?),它们可以自行配置视图外观,或者将视图模型传递给视图,以便自动配置。提供的示例应用使用了最新的方法。
您有两个事件处理器类可以继承
RLDTableViewCellEventHandler
,用于表格视图单元格,以及RLDTableViewSectionAccessoryViewEventHandler
,用于分区标题和页脚。尽管不是必需的,如果处理视图符合RLDHandledViewProtocol
,它将在视图首次显示之前接收到事件处理器。在视图中将保留此事件处理器,以便能够响应视图上的用户生成的事件。此保留的事件处理器将与单元格一起重用,提高性能。
为了按需创建最适合的事件处理器,RLDTableViewDelegate
需要一个事件处理器提供者来查找支持特定组合的表格视图、视图和视图模型的事件处理器。
为了使您的事件处理器可在提供者中使用,您必须使用它们的register()
类方法进行注册。
确保所有类在需要时准备就绪的最好方法是将其注册在同一位置。您可以使用在应用程序完成启动后一次调用函数的注册类,或者在其首次使用之前注册它们。包含的示例应用使用了这种方法。
此类是UITableViewController
的嵌入式替代品。它只需一个表格视图模型即可配置您的表格视图。内部,它使用RLDTableViewDataSource
、RLDTableViewDelegate
和RLDTableViewEventHandlerProvider
的默认实现,因此是使用RLDTableViewSwift
而不必担心其内部结构的最简单方法,同时获得适当架构的最大好处。
Classes
下的文件添加到您的项目中。RLDTableViewSwift
在Apache License,Version 2.0下提供。请参阅LICENSE文件了解更多信息。
此README是用(GitHub-Flavored) Markdown Editor制作的。