Popularity
4.1
Stable
Activity
0.0
Stable
269
10
25

Code Quality Rank: L5
Programming language: Swift
Tags: UI     Table View    

ConfigurableTableViewController alternatives and similar libraries

Based on the "Table View" category.
Alternatively, view ConfigurableTableViewController alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of ConfigurableTableViewController or a related project?

Add another 'Table View' Library

README

ConfigurableTableViewController

Simple view controller that provides a way to configure a table view with multiple types of cells while keeping type safety. To learn what and whys I encourage you to read the associated blog post.

Usage

Let's say we want to present a table view controller with four rows: two with text and two with images. We start by creating view data structures that cells will be configurable with:

struct TextCellViewData {
    let title: String
}

struct ImageCellViewData {
    let image: UIImage
}

and the cells themselves:

class TextTableViewCell: UITableViewCell {
    func updateWithViewData(viewData: TextCellViewData) {
        textLabel?.text = viewData.title
    }
}

class ImageTableViewCell: UITableViewCell {
    func updateWithViewData(viewData: ImageCellViewData) {
        imageView?.image = viewData.image
    }
}

Now to present a table view controller with those cells, we simply configure it in the following way:

import ConfigurableTableViewController

...

let viewController = ConfigurableTableViewController(items: [
    CellConfigurator<TextTableViewCell>(viewData: TextCellViewData(title: "Foo")),
    CellConfigurator<ImageTableViewCell>(viewData: ImageCellViewData(image: apple)),
    CellConfigurator<ImageTableViewCell>(viewData: ImageCellViewData(image: google)),
    CellConfigurator<TextTableViewCell>(viewData: TextCellViewData(title: "Bar")),
    ])

presentViewController(viewController, animated: true, completion: nil)

And ta-da :balloon::

I encourage you to check both the implementation and an example app.

Demo

To run the example project; clone the repo, open the project and run ExampleApp target.

Requirements

iOS 8 and above.

Author

Arkadiusz Holko: