let officialAccountObservable : Observable<[SearchUser]> = SearchAPI.sharedAPI.suggestAccounts()
officialAccountObservable.bind(to: tableView.rx.items
I recommend you to create a Refreshable decorator.
class Refreshable: ObservableType {
typealias E = T
func subscribe(_ observer: O) -> Disposable where O.E == E {
return refreshMeans
.flatMapLatest{ [unowned self] in
return self.origin.asObservable()
}
.subscribe(observer)
}
private let disposeBag = DisposeBag()
private let origin: Observable
init(origin: Observable, updatedOn: Observable = .never()) {
self.origin = origin
updatedOn.bind(to: refreshMeans).disposed(by: disposeBag)
}
private let refreshMeans = BehaviorSubject(value: ())
func refresh() {
refreshMeans.on(.next())
}
}
wrap your officialAccountObservable into a Refreshable:
let officialAccountObservable : Refreshable<[SearchUser]> = Refreshable(origin: SearchAPI.sharedAPI.suggestAccounts())
and call refresh when you need to refresh it:
if(result == true){
officialAccountObservable.refresh()
}