TableViewDataSource
用 Swift 编写的 UITapGestureRecognizer 数据源类,它移除了重复的代码,并使视图控制器保持轻量级
该存储库中确实有一个示例项目,您可以下载、查看并亲自了解这些功能是如何工作的。它们同时支持 Objective-C 和 Swift。
与 UITableView 一起工作
注意:如果您使用 UITableViewCell 作为 nib 文件,请确保将单元格注册到您使用的表格视图中。否则您将看不到单元格。
要使用 TableViewDataSource,您需要对其进行初始化并提供您的 UITableViewCell 标识符。您完成后,请将 UITableView dataSource 设置为 TableViewDataSource 的 dataSource 属性。
@IBOutlet weak var tableView: UITableView! {
didSet {
self.tableView?.dataSource = self.dataSource
}
}
let dataSource: TableViewDataSource = TableViewDataSource(cellIdentifier: "<YourCellIdentifier>")
在您的 UITableViewCell 中添加此协议 TableViewCellDataSource
。(我建议将其作为一个扩展来实现,以保持您的单元格及其配置方式分开。)
extension MyTableViewCell: TableViewCellDataSource {
func configure(_ data: Any?) {
/// setup your cell here
}
}
从头开始构建 UITableViewCell
var items: [String] = ["Apples", "Oranges", "Grapes", "Bannanas"]
...
func buildTable() {
var cellItems = [TableViewDataSourceCellItem]()
for item in items {
let cellItem = TableViewDataSourceCellItem()
cellItem.identifier = "<YourCellIdentifier>"
cellItem.item = item
cellItems.append(cellItem)
}
self.dataSource = TableViewDataSource(cellItems: cellItems)
self.tableView.dataSource = self.dataSource
self.tableView.reloadData()
}
...
处理UITableView分区
var items: [String] = ["Apples", "Oranges", "Grapes", "Bannanas"]
...
func buildTable() {
var dataSources = [TableViewDataSource]()
var cellItems = [TableViewDataSourceCellItem]()
for item in items {
let cellItem = TableViewDataSourceCellItem()
cellItem.identifier = "<YourCellIdentifier>"
cellItem.item = item
cellItems.append(cellItem)
}
for i in 0..<3 {
let dataSource = TableViewDataSource(cellItems: cellItems)
dataSources.append(dataSource)
}
self.sectionDataSource = TableViewSectionDataSource(dataSources: dataSources)
self.tableView.dataSource = self.sectionDataSource
self.tableView.reloadData()
}
...
处理静态UITableViewController
使用相同的设置,您可以在静态表格视图中管理动态单元格。
示例即将推出
索引设置
即将推出
移动和删除单元格
即将推出
安装
CocoaPods
如果您使用CocoaPods,只需将以下内容添加到您的Podfile中
pod 'MSTableViewDataSource'
通过在终端中运行此命令进行安装
pod install
然后将其导入到所有使用该库的文件中
import MSTableViewDataSource
Carthage
只需将其添加到您的Cartfile中
github "Prince2k3/TableViewDataSource"
然后将其导入到所有使用该库的文件中
import TableViewDataSource