PVGTableViewProxy 1.1.0

PVGTableViewProxy 1.1.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布上次发布2016年8月

由以下人员维护:Hilmar Birgir ÓlafssonJóhann Þorvaldur BergþórssonAlexander Annas Helgason



  • Jóhann Þ. Bergþórsson,Hilmar Birgir Ólafsson 和 Alexander Annas Helgason

概览

PVGTableViewProxy 是一个辅助类,用于设置 UITableView,其中您可以声明您的数据为简单的视图模型对象数组,PVGTableViewProxy 确保其被渲染。

在开发 QuizUp 的过程中,我们很快意识到,应用程序的很大一部分(以及大部分 iOS 应用)只是一个列表的集合。这使得我们转向 UITableView,但我们立刻觉得使用起来很不方便。它的冗长、基于代理的 API 强迫我们每次使用它时都要写很多模板代码。作为 React 和其声明式、无状态 UI 方法的忠实粉丝,我们希望在 UITableView 上得到类似的东西。因此,PVGTableViewProxy 诞生了!

目前,PVGTableViewProxy 严重依赖于 Reactive Cocoa

安装

PVGTableViewProxy 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile

pod "PVGTableViewProxy"

使用方法

PVGTableViewProxyExample 子目录中包含了一个示例项目。为了运行示例项目,您必须通过 CocoaPods 安装依赖

cd Example
pod install

一旦安装了依赖项,您可以通过运行 PVGTableViewProxyExample 目标来运行项目。

入门

首先,您需要创建一个具有 UITableView 的视图控制器。然后您创建一个 PVGTableViewProxy 并将您的表格视图和数据传递给它

self.items = @[[DemoCellViewModel new],
               [DemoCellViewModel new]
               [DemoCellViewModel new]];

PVGTableViewProxy *dataSource = [PVGTableViewProxy proxyWithTableView:self.tableView
                                                           dataSource:RACObserve(self, items)
                                                              builder:^(id<PVGTableViewProxyConfig> builder) {
                                                                UINib *nib = [UINib nibWithNibName:@"ExampleNib" bundle:nil];
                                                                [builder registerNib:nib forCellReuseIdentifier:@"exampleNibReuseIdentifier"];
}];

在构建器块中,您注册您的单元格重用标识符。`DemoCell` 必须满足 `PVGTableViewCell` 协议,而 `DemoCellViewModel` 必须满足协议 `PVGTableViewCellViewModel`。设置好这些之后,您可以修改 `self.items`,您的表格视图将更新。查看示例项目以更好地了解 `PVGTableViewProxy` 是一个好主意。

架构

PVGTableViewProxy

负责执行繁重任务的类,将表视图和数据源作为 RACSignal 拥有。 PVGTableViewProxy 在需要插入、删除和重新渲染单元格时表现得很智能。

PVGTableViewCell

表视图单元格需要满足的协议。 height 方法需要返回您的单元格高度作为 NSNumber,在 cellForRowAtIndexPath 中调用 setup 方法。

PVGTableViewCellViewModel

表视图单元格视图模型需要满足的协议。它们具有单元格的独特标识符、唯一ID(即单元格代表的数据模型对象的唯一ID)和缓存ID,这可以让 PVGTableViewProxy 知道相应的单元格是否需要重新渲染。

PVGTableViewSimpleDataSource

你的数据信号的包装器。

单元测试

PVGTableViewProxy 在 Tests 子目录中包含一系列单元测试。为了运行单元测试,您必须通过 CocoaPods 安装测试依赖项。

cd Tests
pod install

安装测试依赖项后,您可以在 Tests 目标上运行测试。单元测试在 Travis CI 上运行,您可以在本页面的顶部查看构建状态。

作者

Jóhann Þ. Bergþórsson, [email protected]

Hilmar Birgir Ólafsson, [email protected]

Alexander Annas Helgason, [email protected]

许可证

PVGTableViewProxy 适用于 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。

更多信息

如果您发现错误,请随意打开一个问题,如果您想要贡献,请提交代码拉取请求!