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 更新后不更新的主要内容,如果未能解决你的问题,请参考以下文章

RxSwift

RXSwift的一些基本交互(OC,Swift,RXSwift对比)

如何正确安装“RxSwift”模块?

RxSwift + 用户默认值

给 iOS 开发者的 RxSwift

RxSwift + Moya + ObjectMapper