TableBuilder 2.0.5

TableBuilder 2.0.5

cba023 维护。



  • 作者:
  • chenbo

TableBuilder

Version License Platform

-> 中文说明

更轻松地编写TableView页面

优点

  • 代码更少
  • 声明式
  • 灵活
  • 基于UITableViewDelegate和UITableViewDataSource
  • 已处理重用功能
  • 易于重写和扩展

示例

要运行示例项目,请克隆仓库,并首先从Example目录中运行`pod install`命令。

要求

Swift 5+

安装

TableBuilder可以通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中

pod 'TableBuilder'

使用方法

import TableBuilder

class ViewController: UIViewController {
    
    @IBOutlet weak var tableView: UITableView!
    
    var tableProxy: TableProxy!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        reloadTable()
    }
    
    var show: Bool = true
    
    func reloadTable() {
        // bind the builder
        tableProxy = tableView.bd.build(TableBuilder {
            for _ in 0..<3 {
                // create a TableViewSection
                TableSectionBuilder {
                    // create a TableViewRow
                    TableRowBuilder(
                        cellHeight: 50,
                        cellType: TableViewCell1.self, reuseType: .nib)
                    { tableView, indexPath, cell in
                        
                    } didSelectRowAtIndexPath: { tableView, indexPath, cell in
                        print("CellType1的单独的点击事件")
                    }
                    TableRowBuilder(
                        cellHeight: 50,
                        cellType: TableViewCell2.self, reuseType: .anyClass)
                    { tableView, indexPath, cell in
                        cell.contentView.backgroundColor = .green
                        cell.textLabel?.text = "\(indexPath.row)"
                    } didSelectRowAtIndexPath: { tableView, indexPath, cell in
                        print("=====Cell类型2的单独的点击事件")
                    }
                    let count = 10
                    for _ in 0..<count {
                        TableRowBuilder(
                            cellHeight: 30,
                            autoCellHeight: false,
                            cellType: UITableViewCell.self,
                            reuseType: .anyClass)
                        { tableView, indexPath, cell in
                            cell.contentView.backgroundColor = .blue
                            cell.textLabel?.text = "\(indexPath.row)"
                        }
                    }
                    if show {
                        TableRowBuilder(
                            cellHeight: 50,
                            cellType: UITableViewCell.self)
                        { tableView, indexPath, cell in
                            cell.contentView.backgroundColor = .purple
                            cell.textLabel?.text = "\(indexPath.row)"
                        }
                        TableRowBuilder(
                            cellHeight: 50,
                            cellType: UITableViewCell.self)
                        { tableView, indexPath, cell in
                            cell.contentView.backgroundColor = .purple
                            cell.textLabel?.text = "\(indexPath.row)"
                        }
                    }
                    else {
                        TableRowBuilder(
                            cellHeight: 90,
                            cellType: UITableViewCell.self)
                        { tableView, indexPath, cell in
                            cell.contentView.backgroundColor = .yellow
                            cell.textLabel?.text = "\(indexPath.row)"
                        }
                    }
                }
            }
        })
        tableProxy.didSelectRowAtIndexPath = { tableView, indexPath in
            print("clicked: \(indexPath.section) - \(indexPath.row)")
        }
        tableView.reloadData()
    }
    
}

作者

chenbo, [email protected]

许可

TableBuilder遵循MIT许可。有关更多信息,请参阅LICENSE文件。