SKCollectionViewDataSource 2.0.0

SKCollectionViewDataSource 2.0.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布日期最新发布2017年10月
SwiftSwift 版本3.0
SPM支持 SPM

Sean Kladek 维护。



  • Sean Kladek

SKCollectionViewDataSource

Travis Status



SKCollectionViewDataSource 提供了一个对象来处理大多数 UICollectionViewDataSource 逻辑。它处理计算行和分区数量、检索单元格和补充视图,并提供更新数据源后台数组的函数。查看工作区中的 SampleProject,以查看一些使用示例。



初始化

自动单元格注册

初始化 CollectionViewDataSource 对象的最简单方法是通过提供一个数组、单元格配置,可选地提供一个 SupplementaryViewConfiguration 对象数组。单元格注册将由 CollectionViewDataSource 对象处理。对象数组可以是 1 维或 2 维数组。单维数组将显示为单分区集合视图。二维数组将显示为多个分区。

import SKCollectionViewDataSource
let textCellNib = UINib(nibName: "TextCell", bundle: Bundle.main)
let cellConfiguration = CellConfiguration<String>(cell: textCellNib) { (cell, object) in
    // Style the cell with the data object here
}

let dataSource = CollectionViewDataSource(objects: array, cellConfiguration: cellConfiguration)
collectionView.dataSource = dataSource

手动单元格注册

如果您需要访问单元格的重用标识符或者需要在集合视图中使用多个单元格类型,您可以选择自己注册单元格。

import SKCollectionViewDataSource
collectionView.register(YourCellClass.self, forCellWithReuseIdentifier: "YourReuseIdentifier")
let dataSource = CollectionViewDataSource(objects: array, delegate: self)
tableView.dataSource = dataSource

注意:如果选择自己处理单元格注册,必须实现 CollectionViewDataSourceDelegate 的 cellForItemAtIndexPath 方法并返回每个索引路径的单元格。


单元格配置

每个自动注册的初始化方法都需要一个 CellConfiguration 对象。此对象将告诉 CollectionViewDataSource 如何配置每个单元格。CellConfiguration 对象可以使用单元格类或 nib 初始化。除此之外,还有一个 CellPresenter 闭包参数可用。此闭包会返回一个单元格和来自对象数组的对象。这可用于使用返回的对象中的值来填充单元格。


补充视图配置

如果集合视图中包含补充视图,可以使用 SupplementaryViewConfiguration 对象添加和配置它们。该对象可以使用视图类或 nib 和视图类型初始化。此外,还有一个 SupplementaryViewPresenter 闭包参数可用。此闭包会返回一个视图和它将显示的分区。这可用于为显示在该分区内的视图进行配置。


CollectionViewDataSourceDelegate

CollectionViewDataSource 有一个可选的代理。这作为 UICollectionViewDataSource 方法的传递。代理对象可以通过实现相应的代理方法覆盖 CollectionViewDataSource 的任何实现。


更新数据数组

有一些方法用于操纵数组中的数据。更新数据源将不会触发任何类型更新在表格视图中。这必须由开发人员处理。

delete(indexPath:)

这将删除提供的索引路径处的对象。

insert(indexPath:)

这将在提供的索引路径处插入提供的对象。

moveFrom(_:to:)

这会将索引路径from处的对象移动到索引路径to。

object(indexPath:)

这返回提供的索引路径处的对象。

setObjects(_:)

这用提供的对象数组替换现有的对象数组。