Latest 2.0.1
Homepage https://github.com/shaps80/CellProvider
License MIT
Platforms ios 8.0
Authors

Version
License
Language
Platform

Generic Cell Providers

Swift is great, but sometimes working with UIKit can be less safe than hanging off the edge of a cliff without a net.

My cell provider implementation ticks off the following:

  • Type-safe cell providers
  • Multiple cell types

I actually wrote this code a long time ago for another library of mine, Populate.

Populate also includes a more consistent API for dealing with data in your table/collection views. Including type-safety, NSFetchedResultsController-like bindings via a simple Swift array, value-types support, sectioning, sorting, and more.

Example

// 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
    }
}

Implementation

The key to implementing multiple type-safe cell handling, is the ResuableView and ReusableViewHosting protocol extensions. It automatically handles all the registration/dequeueing for you — and all without stringly typed identifiers.

Installation

This repo includes a simple sample project for your convenience, however in order to use the code, you simply need to copy CellProvider.swift into your project.

Alternatively you can grab the code from GIST, ReusableView.swift

Platforms and Versions

The following platforms and version have been tested:

  • iOS 8.0 and greater
  • Swift 3.0

Author

@shaps

License

All code is available under the MIT license.

Latest podspec

{
    "name": "CellProvider",
    "version": "2.0.1",
    "summary": "A generic cell provider implementation in Swift.",
    "homepage": "https://github.com/shaps80/CellProvider",
    "screenshots": "https://github.com/shaps80/CellProvider/blob/master/Cells.png?raw=true",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "Shaps Mohsenin": "[email protected]"
    },
    "source": {
        "git": "https://github.com/shaps80/CellProvider.git",
        "tag": "2.0.1"
    },
    "social_media_url": "https://twitter.com/shaps",
    "platforms": {
        "ios": "8.0"
    },
    "source_files": "CellProvider/Classes/**/*",
    "pushed_with_swift_version": "3.0"
}

Pin It on Pinterest

Share This