TestsTested | ✓ |
LangLanguage | SwiftSwift |
License | MIT |
ReleasedLast Release | Apr 2017 |
SwiftSwift Version | 3.1 |
SPMSupports SPM | ✗ |
Maintained by Suyeol Jeon.
Depends on: | |
RxSwift | >= 3.0 |
RxCocoa | >= 3.0 |
RxReusable provides some APIs for managing life cycle of reusable cells and views.
⚠️ In order to use these features properly, you should set delegate by usingrx.setDelegate(_:)
.UITableView
- tableView.delegate = self + tableView.rx.setDelegate(self)UICollectionView
- collectionView.delegate = self + collectionView.rx.setDelegate(self)
var disposeBag: DisposeBag
UITableViewCell
and UICollectionView
now has their own disposeBag
as a property. The dispose bag is automatically disposed on prepareForReuse()
.
observable
.subscribe()
.addDisposableTo(cell.disposeBag)
var isDisplaying: ControlEvent<Bool>
The reactive wrapper for the cell or view is currently displaying or not. This will emit true
when the tableView(_:willDisplay:forRowAt:)
or collectionView(_:willDisplay:forItemAt:)
is executed and false
when the tableView(_:didEndDisplaying:forRowAt:)
or collectionView(_:didEndDisplaying:forItemAt:)
is executed.
cell.rx.isDisplaying
.subscribe(onNext: { isDisplaying in
print("Cell became \(isDisplaying ? "visible" : "invisible")")
})
func whileDisplaying(_:_:)
This operator makes the observable emit items only when the cell or view is currently displaying or not.
observable.whileDisplaying(cell, true) // emit items when the cell is visible
observable.whileDisplaying(cell, false) // emit items when the cell is not visible
Using CocoaPods:
pod 'RxReusable', '~> 0.3'
Using Carthage:
github "devxoul/RxReusable" ~> 0.3
RxReusable is under MIT license.