Skip to content
This repository has been archived by the owner on Nov 1, 2023. It is now read-only.

samsao/DataProvider

Repository files navigation

DataProvider

Data provider is a library made to abstract Table and Collection views boilerplate code. It's all made in Swift!

[![CI Status](http://img.shields.io/travis/Guilherme Lisboa/DataProvider.svg?style=flat)](https://travis-ci.org/Guilherme Lisboa/DataProvider) Version License Platform

Table of Contents

Features

We realized that every time we use a UITable/UICollection view there is a lot of repeated code and we came up with a solution capable of offering:

  • Easy and fast setup
  • Add, insert, remove or update your Table and Collection views data with in a simple method call
  • Lighter controllers
  • Abstracted logic
  • Easily customizable
  • Get rid of lots of boilerplate code from UIKit tools.

Installation

CocoaPods

DataProvider is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "DataProvider"

Manually

Simply copy and paste the Classes folder and it's content into your project. It's all there!

Usage

Creating items

//Create a single item
let singleItem = ProviderItem(data: yourData, cellReuseIdentifier: "Your Cell Reuse ID")
//Suport method to create multiple items with same Cell Reuse Identifier.
let items : [ProviderItem] = ProviderItem.itemsCollectionWithData(yourDataArray, cellReuseIdentifier: "Your Cell Reuse ID")

Creating Sections

// Create your Section with all the items you need!
let section = ProviderSection(items: providerItems)

// Need a tableview header or footer view on your section? We have it!
let section = ProviderSection(items: ProviderItem.itemsCollectionWithData(items, cellReuseIdentifier: kCellRID), headerViewConfig: headerConfig, footerViewConfig: footerConfig)

//Create your section header or footer configuration:
let config = ProviderSectionViewConfiguration(view: view)

//You can also send any you need height in the configuration!
let config = ProviderSectionViewConfiguration(view: view, viewHeight: height)

Provider Configuration

we use this configuration to register and link the cells to the Table/Collection view. And this configuration model for is the same for both!

let providerConfig = ProviderConfiguration(reuseIdentifier: "Your Cell Reuse ID", cellClass: YourClass)
//Using interface builder? We didnt forget you:
let providerConfig = ProviderConfiguration(reuseIdentifier: "Your Cell Reuse ID", cellNibName: "Your Nib Name", nibBundle: NibBundleOrNil)

Provider

All you need to do is create it and hold the reference. It'll do the rest for you!

//TableView
let provider = TableViewProvider(withTableView: yourTableView, sections: yourSections, delegate: tableViewProviderDelegate, cellConfiguration: yourConfigurations)
//CollectionView
let provider = CollectionViewProvider(withCollectionView: yourCollectionView, sections: yourSections, delegate: yourCollectionViewProviderDelegate, cellConfiguration: yourConfigurations)

Now that it's created, you can play with your data:

//Retrieve an item:
let item : ProviderItem = provider.providerItemAtIndexPath(indexPath)
let myData = item.data as! ...
//Insert other items:
provider.addItemsToProvider(yourItems, inSection: sectionIndex)
provider.addItemsToProvider(yourItems, inSection: sectionIndex, rowAnimation: UITableViewRowAnimation.Automatic) // You can also send a row animation in case of TableViewProvider
//Remove
provider.removeItems(indexPathes)
//Update
provider.updateProviderData(newSections)

We have other methods to assist you, it's all documented, check it out! If you need something specific you can always subclass it and do your custom implementation.

There is also an example project. To run it, simply use pod try DataProvider and run the example project

Classes & Structs

ProviderItem //Struct related to a row/cell.
ProviderSection //Struct related to a section in a Table/Collection View.
ProviderConfiguration //Use this Struct to send your cells configuration to the provider.
ProviderSectionViewConfiguration //Use this struct to send header of footer views configuration for your Section.

UICollectionView

CollectionViewProvider //Class with assist methods to insert, remove and edit data in a collection view. Also holds a reference for delegate and datasource.
CollectionViewProviderDelegateHandler //Class responsible for UICollectionViewDelegate code. Subclass it if you need to implement other delegate methods.
CollectionViewProviderDataSourceHandler //Class responsible for UICollectionViewDataSource code. Subclass it if you need to implement other data source methods.

UITableView

TableViewProvider //Class with assist methods to insert, remove and edit data in a collection view. Also holds a reference for delegate and datasource.
TableViewProviderDelegateHandler //Class responsible for UITableViewDelegate code. Subclass it if you need to implement other delegate methods.
TableViewProviderDataSourceHandler //Class responsible for UITableViewDataSource code. Subclass it if you need to implement other data source methods.

Protocols

ProviderDataComparable //Protocol to be implemented by the data of a provider item. Necessary to compare and differenciate an item's content from another.

ProviderCellProtocol //Protocol to be implemented by your cell class. Consider using an extension if you're using the default UICollection/UITable ViewCell.

TableViewProviderDelegate //TableViewProvider Protocol. Used to comunicate between the provider and your application. Subclass it if additional methods are needed.

CollectionViewProviderDelegate //CollectionViewProvider Protocol. Used to comunicate between the provider and your application. Subclass it if additional methods are needed.

Credits

Author

Collaborators

Thanks

License

DataProvider is available under the MIT license. See the LICENSE file for more info.

About

Data provider is a library made to abstract Table and Collection views boilerplate code.

Resources

License

Stars

Watchers

Forks

Packages

No packages published