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 using
rx.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
RxReusable is under MIT license.