Skip to content

Repository files navigation

ReusableKit

SwiftCocoaPodsBuild StatusCodecov

Generic reusables for Cocoa. Currently supports UITableView and UICollectionView.

At a Glance

Before 🤢

collectionView.register(UserCell.self, forCellWithReuseIdentifier:"userCell")
collectionView.dequeueReusableCell(withReuseIdentifier:"userCell", for: indexPath)as!UserCell
  1. A hard-coded string identifier can cause a human error.
  2. A force downcasting should be avoided.

After 😊

letreusableUserCell=ReusableCell<UserCell>()
collectionView.register(reusableUserCell)
collectionView.dequeue(reusableUserCell) // UserCell
  1. A string identifier is generated automatically using UUID and stored in the struct.
  2. A generic can ensure the type of the dequeued cell statically.

Example Usage

It is recommended to define reusable types as a static constants in an enum or a struct.

UITableView

// 1. define
enumReusable{staticletheaderView=ReusableCell<SectionHeaderView>()staticletuserCell=ReusableCell<UserCell>()}
// 2. register
tableView.register(Reusable.headerView)
tableView.register(Reusable.userCell)
// 3. dequeue
tableView.dequeue(Reusable.headerView, for: indexPath)
tableView.dequeue(Reusable.userCell, for: indexPath)

UICollectionView

// 1. define
enumReusable{staticletheaderView=ReusableCell<SectionHeaderView>()staticletphotoCell=ReusableCell<PhotoCell>()}
// 2. register
collection.register(Reusable.headerView, kind:.header)
collection.register(Reusable.photoCell)
// 3. dequeue
collection.dequeue(Reusable.headerView, kind:.header, for: indexPath)
collection.dequeue(Reusable.photoCell, for: indexPath)

RxSwift Extension

ReusableKit supports a RxSwift extension.

users // Observable<[String]>
.bind(to: collectionView.rx.items(Reusable.userCell)){ i, user, cell in
cell.user = user
}

Contrubiting

Pull requests are welcomed 💖

In order to create Xcode project, run:

$ swift package generate-xcodeproj

Installation

  • For iOS 8+ projects with CocoaPods:

    pod'ReusableKit'pod'ReusableKit/RxSwift'# with RxSwift extension

License

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

About

Generic reusables for UICollectionView and UITableView

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages