SKTableViewDataSource
SKTableViewDataSource 提供了一个对象来处理大部分的 UITableViewDataSource 逻辑。它处理计算行和区域数量,检索单元格,并提供了更新数据源底层数组的方法。查看工作区中的 SampleProject 以查看一些用法示例。
安装
Cocoapods
安装通过 Cocoapods 支持。将以下内容添加到您想要使用 SKTableViewDataSource 的目标 pod file 中:
pod 'SKTableViewDataSource'
初始化
自动单元格注册
初始化TableViewDataSource对象的最简单方法是提供一个数组、单元格类或nib,以及一个用于在cellForRowAtIndexPath中处理单元格样式的CellPresenter闭包。单元格注册将由TableViewDataSource对象处理。对象数组可以是1维或2维数组。单维数组将显示为单个节表的表格。二维数组将以多个节显示。
import SKTableViewDataSource
let dataSource = TableViewDataSource(objects: array, cell: UITableViewCell.self, cellPresenter: { (cell, object) in
cell.textLabel?.text = object
})
tableview.dataSource = dataSource
手动单元格注册
如果您需要访问单元格的重用标识符或需要在您的表格视图中使用多个单元格类型,您可以选择自己注册单元格。
import SKTableViewDataSource
tableView.register(YourCellClass.self, forCellReuseIdentifier: "YourReuseIdentifier")
let dataSource = TableViewDataSource(objects: array, delegate: self) {
cell.textLabel?.text = object.rawValue
})
tableView.dataSource = dataSource
注意:如果您选择自己处理单元格注册,必须实现TableViewDataSourceDelegate的cellForRowAtIndexPath方法,并为每个索引路径返回一个单元格。
CellPresenter
自动单元格注册的每个初始化方法都有一个可选的CellPresenter
闭包。闭包返回两个参数:一个单元格和一个对象。此闭包可以用来将对象的值填充到单元格中。
TableViewDataSourceDelegate
TableViewDataSource
有一个可选的代理。它作为UITableViewDataSource
方法的传递。代理对象可以通过实现相应的代理方法来覆盖任何TableViewDataSource
实现。
更新数据数组
有几种方法可以用于操作数组中的数据。更新数据源不会触发表格视图中的任何更新。这必须由开发者处理。
deleteObjectAt(_:)
这将删除提供索引路径的对象。
indexPathOf(_:) -> IndexPath?
这将返回输入对象的索引路径。
insert(object:at:)
这将插入提供对象到提供的索引路径。
moveObjectFrom(_:to:)
这将移动从索引路径到到的索引路径的对象。
objectAt(_:) -> T
这将返回提供索引路径的对象。
setObjects(_:)
这将用提供的对象数组替换现有的对象数组。