CellProvider 2.0.1

CellProvider 2.0.1

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

Shaps维护。




CellProvider

通用Cell Provider

Swift语言很棒,但有时与UIKit协同工作时可能没有安全网。

我的cell provider实现满足以下要求:

  • 类型安全的cell providers
  • 多种cell类型

我实际上在很久以前为我的另一个库Populate编写了这段代码。

Populate还包括处理table/collection视图数据的更一致的API。包括类型安全,通过简单的Swift数组的NSFetchedResultsController-like绑定,value类型的支持,分节,排序,等等。

示例

// First register your cell
tableView.register(cellClass: PersonCell.self)
// Then dequeue with a type-safe function
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let person = people[indexPath.item]

    if person.role == "Engineer" {
        let cell = tableView.dequeueReusableCell(ofType: PersonCell.self, for: indexPath)
        cell.textLabel?.text = person.name
        cell.detailTextLabel?.text = person.role
        return cell
    } else {
        let cell = tableView.dequeueReusableCell(with: "SubtitleCell", for: indexPath) as UITableViewCell
        cell.textLabel?.text = person.name
        cell.detailTextLabel?.text = person.role
        return cell
    }
}

实现

实现多类型安全的cell处理的关键是ResuableViewReusableViewHosting协议扩展。它可以自动为您处理所有注册/队列操作——并且完全不需要字符串类型标识符。

安装

此仓库包含一个简单的示例项目供您方便使用,但是为了使用代码,只需将CellProvider.swift复制到您的项目中即可。

或者您可以从GIST获取代码,ReusableView.swift

平台和版本

以下平台和版本已进行测试:

  • iOS 8.0及更高版本
  • Swift 3.0

作者

@shaps

许可证

所有代码均可在MIT许可证下获取。