Technology moves fast! ⚡ Don't get left behind.🚶 Subscribe to our mailing list to keep up with latest and greatest in open source projects! 🏆


Subscribe to our mailing list

ConfigurableTableViewController

Typed, yet Flexible Table View Controller

Subscribe to updates I use ConfigurableTableViewController


Statistics on ConfigurableTableViewController

Number of watchers on Github 245
Number of open issues 2
Average time to close an issue 19 days
Main language Swift
Average time to merge a PR less than a minute
Open pull requests 1+
Closed pull requests 0+
Last commit over 2 years ago
Repo Created over 3 years ago
Repo Last Updated over 1 year ago
Size 128 KB
Homepage http://holko.pl/2...
Organization / Authorfastred
Contributors1
Page Updated
Do you use ConfigurableTableViewController? Leave a review!
View open issues (2)
View ConfigurableTableViewController activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating ConfigurableTableViewController for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

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:

ConfigurableTableViewController open issues Ask a question     (View All Issues)
  • over 3 years didSelectRowAtIndexPath method
ConfigurableTableViewController open pull requests (View All Pulls)
  • Add sections support
ConfigurableTableViewController list of languages used
Other projects in Swift