All Projects → surfstudio → ReactiveDataDisplayManager

surfstudio / ReactiveDataDisplayManager

Licence: MIT license
No description or website provided.

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to ReactiveDataDisplayManager

ZXTableView
快速、高效地构建TableView,节省80%以上重复代码,无需设置数据源和代理。
Stars: ✭ 18 (-48.57%)
Mutual labels:  tableview, tableviewcell
android-tableview-kotlin
Android's missing TableView component.
Stars: ✭ 40 (+14.29%)
Mutual labels:  tableview, tableviewcell
SNAdapter
iOS swift tableview and collectionView Adapter
Stars: ✭ 35 (+0%)
Mutual labels:  tableview, tableviewcell
TableViewExtension
This extension simplify registering any cell, reusing and other verbosity steps.
Stars: ✭ 13 (-62.86%)
Mutual labels:  tableview, tableviewcell
Tdbadgedcell
TDBadgedCell is a table view cell class that adds a badge, similar to the badges in Apple's own apps
Stars: ✭ 1,444 (+4025.71%)
Mutual labels:  tableview, tableviewcell
MultilevelList
TableView多级列表:分级展开或合并,逐级获取并展示其子级数据,可以设置最大的层级数,支持多选、单选、取消选择。
Stars: ✭ 59 (+68.57%)
Mutual labels:  tableview
ugo
Simple and expressive toolbox written in Go
Stars: ✭ 27 (-22.86%)
Mutual labels:  collections
ContentTableViewController
🏓 Super simple CocoaPod to present content. https://insanj.github.io/ContentTableViewController/
Stars: ✭ 24 (-31.43%)
Mutual labels:  tableview
ZKTreeTableView
A view of the tree structure.树状结构列表。
Stars: ✭ 97 (+177.14%)
Mutual labels:  tableview
awesome-hive
A curated list of awesome Hive resources.
Stars: ✭ 20 (-42.86%)
Mutual labels:  collections
SPPickerView
这是一个选择器,功能类似系统的UIPickerView,但是比UIPickerView的适用范围广得多
Stars: ✭ 28 (-20%)
Mutual labels:  tableview
indicium
🔎 A simple in-memory search for collections and key-value stores.
Stars: ✭ 41 (+17.14%)
Mutual labels:  collections
pyfuncol
Functional collections extension functions for Python
Stars: ✭ 32 (-8.57%)
Mutual labels:  collections
awesome-pinescript
A Comprehensive Collection of Everything Related to Tradingview Pine Script.
Stars: ✭ 563 (+1508.57%)
Mutual labels:  collections
arctos
Arctos is a museum collections management system
Stars: ✭ 39 (+11.43%)
Mutual labels:  collections
StretchableTableViewHeader-Swift
You might have seen a collapsable or stretchable tableview header in android. If you check the whatsapp profile/ group settings page , you can see this. If you are using Netflix app, you might have seen a zoom in effect in the tableview header as well. Well, if you ever wondered how to do this in iOS, I will give a simple solution.
Stars: ✭ 57 (+62.86%)
Mutual labels:  tableview
HelloWorlds
Hello-World program in most programming languages
Stars: ✭ 102 (+191.43%)
Mutual labels:  collections
v2ex-collections-search
v2ex收藏搜索
Stars: ✭ 21 (-40%)
Mutual labels:  collections
SectionReactor
A ReactorKit extension for managing table view and collection view sections with RxDataSources
Stars: ✭ 45 (+28.57%)
Mutual labels:  tableview
SSComposeCookBook
A Collection of major Jetpack compose UI components which are commonly used.🎉🔝👌
Stars: ✭ 386 (+1002.86%)
Mutual labels:  collections

ReactiveDataDisplayManager

Build codebeat badge codecov

It is the whole approach to working with scrollable lists or collections.

Logo

About

This Framework was made to speed up development of scrollable collections like UITableView or UICollectionView, and to provide new way to easy extend collections functionality.

Breaking changes

We made a massive refactoring with version 7.0.0. Please read our migration guide if you were using version 6 or older.

Currently supported features

  • Populating cells without implementing delegate and datasource by yourself
  • Inserting, replacing or removing cells without reload
  • Expanding and collapsing cells inside collection
  • Moving or Drag'n'Drop cells inside collection
  • Customizing of section headers and index titles

Usage

Step by step example of configuring simple list of labels.

Prepare cell

You can layout your cell from xib or from code. It doesn't matter. Just extend your cell to ConfigurableItem to fill subviews with model, when cell will be created.

import ReactiveDataDisplayManager

final class LabelCell: UITableViewCell {

    // MARK: - IBOutlets

    @IBOutlet private weak var titleLabel: UILabel!

}

// MARK: - ConfigurableItem

extension LabelCell: ConfigurableItem {

    typealias Model = String

    func configure(with model: Model) {
        titleLabel.text = model
    }
}

Prepare collection

Just call rddm from collection

  • add plugins for your needs
  • build your ReactiveDataDisplayManager
final class ExampleTableController: UIViewController {

    // MARK: - IBOutlets

    @IBOutlet private weak var tableView: UITableView!

    // MARK: - Private Properties

    private lazy var ddm = tableView.rddm.baseBuilder
        .add(plugin: .selectable())
        .build()

    // MARK: - UIViewController

    override func viewDidLoad() {
        super.viewDidLoad()
        fill()
    }

}

Fill collection

Convert models to generators and call ddm => .reload

private extension MainTableViewController {

    func fill() {

        let models = ["First", "Second", "Third"]

        for model in models {
            let generator = TitleTableViewCell.rddm.baseGenerator(with: model)

            generator.didSelectEvent += { [weak self] in
                // do some logic
            }

            // Add generator to adapter
            ddm.addCellGenerator(generator)
            // or simple use operator `+=`
            ddm += generator
        }

        ddm => .reload
    }

}

Enjoy

As you can see, you don't need to conform UITableViewDelegate and UITableViewDataSource. This protocols are hidden inside ReactiveDataDisplayManager. You can extend table functionality with adding plugins and replacing generator.

Feature

You can check more examples in our example project or in full documentation. Small cheat sheet table could also be usefull.

Installation

Just add ReactiveDataDisplayManager to your Podfile like this

pod 'ReactiveDataDisplayManager' ~> 7.3

Changelog

All notable changes to this project will be documented in this file.

Issues

For issues, file directly in the main ReactiveDataDisplayManager repo.

Contribute

If you would like to contribute to the package (e.g. by improving the documentation, solving a bug or adding a cool new feature), please review our contribution guide first and send us your pull request.

You PRs are always welcome.

License

MIT License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].