TableManager
TableManager 是 UITableView
的扩展。以更简单的方式操作您的表格。添加部分和行。配置头部和底部。单独隐藏和显示行。并且这个库会为您处理所有协议。这是您期望的表格。
要求
它需要 Xcode 10.0 和 Swift 4.2。
您的项目部署目标必须是 iOS 8.0+
安装
CocoaPods
TableManager 通过 CocoaPods 提供。要安装它,只需在你的 Podfile 中添加以下行
pod 'TableManager'
手动
您也可以通过将 TableManager 文件拖拽到您的项目中来自动安装。
基本用法
只需两步即可配置表格
第一步 - 导入 TableManager
import TableManager
第二步 - 添加一行配置
tableView.addRow().setConfiguration { _, cell, _ in
cell.textLabel?.text = "Row \(number)"
}
完整示例
import TableManager
class ViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
(1...10).forEach { n in
tableView.addRow().setConfiguration { _, cell, _ in
cell.textLabel?.text = "Row \(n)"
}
}
}
}
文档
行
魔法从这里开始:添加行。
直接使用UITableView的扩展
tableView.addRow()
或者实例化一个行并将其添加到表格中
let someRow = Row()
tableView.addRow(someRow)
您可以在指定的部分中添加行,例如最后一个部分
let someRow = Row()
tableView.sections.last?.addRow(someRow)
可见性
您可以更改任何部分和任何行的 visible
属性。
someRow.setVisible(true)
someSection.setVisible(false)
配置自定义单元格
您可以设置标识符和 configuration
属性。
let row = Row(identifier: "CellBasic", object: someString)
row.setConfiguration { (row, cell, indexPath) in
if let text = row.object as? String {
cell.textLabel?.text = text
}
}
tableView.addRow(row)
或者声明一个 Row.Configuration
并将其分配给任何行
let configuration: Row.Configuration = { (row, cell, indexPath) -> Void in
if let text = row.object as? String {
cell.textLabel?.text = text
}
}
let rowA = tableView.addRow(Row(identifier: "CellBasic", object: someObject))
rowA.setConfiguration(configuration)
let rowB = tableView.addRow(Row(identifier: "CellBasic", object: otherObject))
rowB.setConfiguration(configuration)
行选择事件
您可以设置didSelect
属性
let row = Row(object: someString)
row.setDidSelect { (row, tableView, indexPath) in
if let text = row.object as? String {
print(text + " selected")
}
}
tableView.addRow(row)
或者声明一个Row.DidSelect
并将其分配给任何行
let didSelect: Row.DidSelect = { (row: Row, tableView: UITableView, indexPath: NSIndexPath) -> Void in
if let text = row.object as? String {
print(text + " selected")
}
}
let rowA = tableView.addRow(Row(object: someString))
rowA.setDidSelect(didSelect)
let rowB = tableView.addRow(Row(object: someString))
rowB.setDidSelect(didSelect)
已选中行
您可以获取与选中单元格对应的行
if let selectedRow = tableView.selectedRow() {
print('the selected row is: ' + selectedRow.object)
}
可见行
您可以获取在用户界面上显示的单元格所在的可见行
if let visibleRows = tableView.visibleRows() {
visibleRows.forEach { row in
print(row)
}
}
UIScrollViewDelegate事件
您可以自行处理所有的scrollview代理
class TableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
tableView.scrollViewDelegate = self
// [...]
}
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
print(scrollView.contentOffset.y)
}
}
拖放功能或排序
在编辑表格时,只需在setCanMove
方法中传递true
即可使行可拖动
let row = tableView.addRow()
row.setCanMove(true)
// [...]
tableView.editing = true
删除
在编辑表格时,只需在setCanDelete
方法中传递true
即可使行可删除
let row = tableView.addRow()
row.setCanDelete(true)
// [...]
tableView.editing = true
您还可以轻松编辑标题确认
row.setCanDelete(true, titleForDeleteConfirmation: "Go away")
索引导航标题
您可以通过为每个想要显示在索引导航中的部分传递indexTitle
,调用setIndexTitle
方法来创建索引导航标题(例如iOS上的联系人列表)。
let section = tableView.addSection().setIndexTitle("A")
更改日志
贡献
欢迎提交您的pull请求,提出任何更新建议,报告错误或创建功能请求。
只是想打个招呼? -> [email protected]
贡献者
作者: @Morbin_ / fb.com/hgmorbin
查看帮助改进此项目的所有人: 贡献者 ♥
授权
TableManager适用于MIT许可证。更多信息请参阅LICENSE文件。