5
當使用RxSwift
從Web服務提取新內容時,我願意強制重新加載collectionView
。當我的onComplete閉包被正確調用時,我無法弄清楚爲什麼我沒有在newContent上收到以下代碼的事件。如何在RxSwift中配置Bool流
class ListingView : UIView {
var newContentStream: Observable<Bool>?
let disposeBag = DisposeBag()
@IBOutlet weak var collectionView: UICollectionView!
weak var viewModel: ListingViewModel?
func bind(viewModel: ListingViewModel) {
self.viewModel = viewModel
}
func configure() {
guard let viewModel = self.viewModel else { return }
self.newContentStream = viewModel.newContent.asObservable()
self.newContentStream!.subscribeNext { _ in
self.collectionView.reloadData()
}
.addDisposableTo(self.disposeBag)
}
}
,然後我的ViewModel中:
class ListingViewModel {
let dataSource = ListingViewDataSoure()
var newContent = Variable(false)
func mount() {
let onComplete : ([item]? -> Void) = { [weak self] items in
self?.dataSource.items = items
self?.newContent = Variable(true)
}
guard let URL = API.generateURL() else { return }
Requestor.fetchAll(onComplete, fromURL: URL)
}
}
感謝您使用RxDataSources指點我。我怎麼能簡單地流一些布爾事件,但如果我不應該重置newContent?我可以觀察數據源嗎? – tiguero
我編輯了答案,向你展示瞭如何。但是,我不會建議這樣做。 – solidcell
它對您的建議很好,謝謝 - 我現在將RxDataSources視爲下一步 – tiguero