RxSwift - UICollectionView 更新后不更新
Posted
技术标签:
【中文标题】RxSwift - UICollectionView 更新后不更新【英文标题】:RxSwift - UICollectionView does not update after updating 【发布时间】:2019-10-09 13:52:26 【问题描述】:我有一个带有 2 个控制器的 UITabBarController。
-
在第一个VC用户中有一个文章列表。用户可以将一些文章添加到收藏夹(领域数据库)
第二个 VC 它是一个带有领域查询的列表(最喜欢的文章)。
当创建 2 个控制器时(用户同时点击它们),并在第一个 VC 中将文章添加到收藏夹,在第二个 collectionView 中不显示新项目。
我最喜欢的VC collectionView绑定
private func setupBinds()
self.favArticleCollectionView.register(UINib(nibName: "PreviewItemVCell", bundle: nil), forCellWithReuseIdentifier: PreviewItemVCell.identifier)
viewModel
.articlesSubject
.observeOn(MainScheduler.instance)
.bind(to:
self.favArticleCollectionView.rx.items(cellIdentifier: PreviewItemVCell.identifier, cellType: PreviewItemVCell.self)) (item, article,cell) in
cell.article = article
.disposed(by: disposeBag)
还有我最喜欢的从 db 查询的ViewModel
class FavouriteViewModel
let articlesSubject: PublishSubject<[ArticleModel]> = PublishSubject()
func fetchDateFromDb()
print(Realm.Configuration.defaultConfiguration.fileURL!)
let articleList = DatabaseManager.shared.getAllArticle().toArray()
articlesSubject.onNext(articleList)
问题:当控制器创建后,他没有更新。如何更新?
【问题讨论】:
什么时候触发fetchDateFromDb
?如果在加载 secondVC 时仅触发一次,那么当用户添加到收藏夹时,您将不会获得新数据。您可以在出现时重新获取,或者在向收藏夹添加/删除元素时触发fetchDateFromDb
。
@Ben 我在 viewWillAppear 方法中调用它,它始终是最后一个日期
【参考方案1】:
问题在于我的集合视图的自定义布局。 这是正确的答案 enter link description here
【讨论】:
以上是关于RxSwift - UICollectionView 更新后不更新的主要内容,如果未能解决你的问题,请参考以下文章