/MVVMKit

Lets try to develop library which can be used when implementing MVVM for iOS

Primary LanguageSwiftMIT LicenseMIT

MVVMKit

Background

MVC as Massive View Controller. Navigation logic scattered around Storyboard, prepareForSegue: and "plain code" approach.

Goal

Implement a MVVM library that works together with UIKit and has the following features:

  • Provides a way to describe navigation flow programmatically.
  • Such description should not be placed all over the UI implementation.
  • Type safe.
  • Way to bind View Model to View.
  • Moves decision about when and where transitions shold occur to View Models.
  • Integrates with Storyboard.
  • Binds collections of View Models to UITableView, UICollectionView, etc.
  • Allows to test View Models without View layers.
  • Reduce boilerplate code usual for UIKit: registration of table cells, loading view controllers from storyboard, etc.

Benefits

View layer (View + UIViewController) no more contains "semi-UI semi-Model" logic. Easier to write functional tests. You can describe how to instantiate UIView or UIViewController (by initializer, from Storyboard or Nib) and provide additional information like Reuse Identifiers. More importantly MVVMKit using it to setup Views for you.

Documentation

Not ready yet. Please, see example project DLife.