Griddle 1.0.4

Griddle 1.0.4

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2017年4月
SwiftSwift 版本3.0
SPM支持 SPM

Alex Severyanov 维护。



Griddle 1.0.4

  • Alex Severyanov

Griddle

简化的 UITableView, UICollectionView 和其他具有集合结构视图的管理器

这是什么?

这是用于处理表格视图、收集视图以及任何其他具有集合结构的视图的层。

它能帮您做什么?

  1. 您不再需要实现 tableView/collectionView 的 delegate/dataSource。只需有一个展示者来代替您完成这项工作。
  2. 您无需关注数据更新,只需在您的数据源类中删除/添加/移动/替换/插入等元素,视图将自动获取它们。
  3. 如果您使用 CoreData,您无需再关注 NSFetchedResultsController 的数据更新。只需使用 FetchedResultsSource,当数据库发生变化时,您的 UI 也会同步变化。
  4. 您有通用应用吗?iPad 和 iPhone 版本有不同视图(例如,collection view 和 table view),但一个数据包(例如,iPhone 上的一个屏幕有表格视图,而 iPad 上有收集视图)?您只需要使用不同的展示者和一个数据源。不再需要为具有一个数据包的不同视图实现 delegate 和 dataSource。
  5. 您有自定义具有集合结构的视图并且想要使用此模块?这很简单。只需实现您将用于视图的展示者。

示例

当前的测试项目包含一些简单的示例:1. 简单的表格视图 2. 简单的收集视图 3. iPhone 上的 UITableView,但 iPad 上的 UICollectionView 4. 具有集合结构的自定义视图 5. 一个 UITableView,但多个 DataSource

模块结构

此模块包含 3 个基本对象:1. 展示者 - UI 操作的基础类。只有这个对象与 UI 交互,并在需要时实现视图的 delegate/data source。2. 数据源 - 模型的存储。3. 映射 - 返回有关应用于模型或索引路径的视图信息

代码片段

  var presenter: TablePresenter<ArraySource<MenuCellModel>>!

    lazy var dataSource: ArraySource<MenuCellModel> = [
        MenuCellModel(title: "Table View", segueID: "Table"),
        MenuCellModel(title: "Collection View", segueID: "Collection"),
        MenuCellModel(title: "iPhone/iPad", segueID: "Universal"),
        MenuCellModel(title: "Custom View", segueID: "Custom"),
        MenuCellModel(title: "One table view, several data sources", segueID: "Segment")
    ]

  override func viewDidLoad() {
    super.viewDidLoad()
    let map = DefaultMap()
    map.viewInfoGeneration = { _,_ in ViewInfo(identifier: "Cell", viewClass: MocTableCell.self) }

    presenter = TablePresenter(tableView, source: dataSource, map: map)
    presenter.delegate.didSelectCell = { [unowned self] _, model, _ in
      self.performSegue(withIdentifier: model.segueID, sender: nil)
    }
  }