FLTableComponent 2.0.1

FLTableComponent 2.0.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发行上次发布2017年5月
SwiftSwift 版本3.0
SPM支持 SPM

clarence 维护。



  • 作者
  • gitKong

FLTableComponent 用于 tableView 和 collectionView

介绍

一个用于 tableView 和 collectionView 的组件,它可以大大减少您的控制器代码,同时,您可以更容易地设置头部或尾部

要求

swift3+ 和 xcode8+

安装

pod "FLTableComponent"

如何使用(仅给出 tableView 的示例)

  1. 创建一个继承自 FLTableComponentController 类的控制器
class DemoViewController: FLTableComponentController {
  
}
  1. 创建一个继承自 FLTableBaseComponent 并覆盖一些方法的组件
class DemoComponent: FLTableBaseComponent {

  override func cellForRow(at indexPath: IndexPath) -> UITableViewCell {
    let cell : UITableViewCell = super.cellForRow(at: indexPath)
    return cell
}

  override func numberOfRows() -> NSInteger {
      return 2
  }

  ...

}
  1. 在控制器中设置数据源
var arr : Array<FLTableBaseComponent> = []
        
let component = DemoComponent.init(tableView: self.tableView)
let NibComponent = NibDemoComponent.init(tableView: self.tableView)

arr.append(component)
arr.append(NibComponent)
self.components = arr

自定义使用

  1. 自定义 tableView 样式和矩形
override var tableViewStyle: UITableViewStyle {
  return UITableViewStyle.grouped
}

override func customRect() -> CGRect {
  return self.view.bounds
}
  1. 覆盖 register() 方法以注册自定义单元格、头部或尾部
override func register() {
  // if you need default register, call super
  //super.register()
  // regist your custom cell、header or footer
}
  1. 为单元格创建自定义头部或尾部
override func headerView(at section: Int) -> FLTableViewHeaderFooterView? {
  // you should call super to get headerView if you just regist the class of FLTableViewHeaderFooterView;
  // if you override the method of register() to regist the subclass of FLTableViewHeaderFooterView, you can not call super to get headerView,
  // and you should call init(reuseIdentifier: String?, section: Int) and addClickDelegete(for headerFooterView : FLTableViewHeaderFooterView?)
  // if this headerView have to accurate tapping event
}
    
override func additionalOperationForReuseHeaderView(_ headerView: FLTableViewHeaderFooterView?) {
  // do some additional operations, at usual, you add label or button or something else into header view to resue
  // but if you had registed the class of FLTableViewHeaderFooterView for footerView, this method will be invalid.
  //so if you want it to be valiable, do not call super when you override register() method
}
    
override func heightForHeader(at section: Int) -> CGFloat {
  // return height for header
}
    
override func footerView(at section: Int) -> FLTableViewHeaderFooterView? {
  // the same as header
}
    
override func additionalOperationForReuseFooterView(_ footerView: FLTableViewHeaderFooterView?) {
  // the same as header
}
    
override func heightForFooter(at section: Int) -> CGFloat {
    // return height for footer
}
  1. 自定义 tableView 的头部和尾部
override func headerView(of tableView: UITableView) -> UIView? {
  // return tableHeaderView
}
    
override func footerView(of tableView: UITableView) -> UIView? {
  // return tableFooterView
}

作者

[email protected]简书我的博客

感谢

rickytan RTComponentTableView(Objective-C)

许可证

FLTableComponent 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。