测试已测试 | ✓ |
Lang语言 | Obj-CObjective C |
许可证 | MIT |
Released最后发布 | 2016年10月 |
SwiftSwift版本 | 3.0 |
由Jason Grandelli,Nick DiStefano,Ryan Garchinsky维护。
URBNDataSource是一个抽象层,用单一API操作UITableView和UICollectionView。
URBNDataSource的理念是将UITableView和UICollectionView的注册/配置方法统一。同时,我们还加入了基于块(block)的单元格配置,以便让您单元格的设置既美观又整洁。
URBNDataSourceAdapter: 这是一个抽象类。它是为了封装注册单元格和存储配置块的所有基础逻辑,您不能直接使用这个类。
URBNArrayDataSourceAdapter: 这是一个URBNDataSource的子类,基于一个数组(或数组的数组)的项构建。这个dataSource将适用于大多数基本需求。
URBNAccordionDataSourceAdapter: 这是一个URBNArrayDataSource的子类,基于一个数组数组的项和一个分区数组构建。这为可折叠样式的表格视图和集合视图添加了支持。
我们有几种方法来注册单元格。
-registerCellClass: withIdentifier: withConfigurationBlock:
这是主要的单元格注册调用。您提供您想要使用的单元格类,您想要与该单元格一起使用的标识符,以及一个配置块,该块将在cellForItem或cellForRow被调用时被调用。
** 注意,如果您的标识符是您的nib的名称,这将自动处理nib。
-registerCellClass: withConfigurationBlock:
这是一个用于没有多个具有不同标识符的相同类别的单元格的便利方法。
如果您需要一个更复杂的单元格布局,您可能需要自行指定单元格标识符。我们已经认识到这种情况,并有一种基于块的解决方案。
NSArray *items = @[@"string",@10, @"STRING 2"];
URBNArrayDataSourceAdapter *adapter = [[URBNArrayDataSourceAdapter alloc] initWithItems:items]];
// Here you can pass back the cellIdentifier based off of the indexPath
[adapter setCellIdentifierBlock:^NSString *(id item, NSIndexPath *indexPath) {
if (indexPath.row == 0) {
return @"StringIdentifier";
} else if (indexPath.row == 1) {
return @"NumberIdentifier";
} else {
return @"UnknownCellIdentifier";
}
}];
如果您需要除了单元格之外的内容,我们也为标题和页脚提供了支持。
- registerSupplementaryViewClass:ofKind:withConfigurationBlock:
这可以与UICollectionView或UITableView一起使用。这基本上与单元格注册相同,但它管理头部和尾部。我们还有一个版本可以传递您想使用的标识符。
- registerSupplementaryViewClass:ofKind:withIdentifier:withConfigurationBlock:
这遵循与registerCellClass方法相同的指南。这意味着我们具有相同的多个视图ID块处理程序
-setSupplementaryViewIdentifierBlock:
所有示例都可以在我们的示例项目中找到。我们既有在IB中创建所有内容的示例,也有在代码中创建所有内容的示例。
URBNDataSource已在iOS 7及更高版本上进行了测试。尽管它可能在较低的部署目标上工作,但仍需支持ARC。
URBNDataSource在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。