如何抑制可观察到的条件变为真

问题描述 投票:0回答:1

我的应用程序中有一个集合视图,当有新内容或删除内容时,它将以动画刷新。但是,我不希望在用户滚动时刷新它,因为这会引起抽动。我只想在用户完成滚动时/不滚动时刷新集合视图。

所以我有一个数据源驱动程序,我试图使用filter使其等待,直到它变为true,但没有运气。

这是我传递给ViewModel的滚动驱动程序>

let isScrollViewScrollingDriver = Observable.merge(
            gridCollectionView.rx.willBeginDragging.map { _ in true },
            gridCollectionView.rx.didEndDragging.map { _ in false }
        ).asDriver(onErrorJustReturn: false).startWith(false).distinctUntilChanged()

我在视图控制器中的ViewModel初始化

viewModel = ViewModel(
            photoLibraryService: PhotoLibraryService.shared,
            isGridViewScrolling: isScrollViewScrollingDriver,
            disposeBag: disposeBag
        )

我的ViewModel

let assetDriver = photoLibraryService.albumDriver.asObservable()
                .withLatestFrom(
                    isGridViewScrolling.asObservable().filter { $0 == false }
                ) { (arg0, arg1) in
                    return arg0
                }.flatMapLatest { libraryAlbum -> Observable<[LibraryAsset]> in
                    return photoLibraryService.convert(album: libraryAlbum)
                }.asDriver(onErrorJustReturn: []).startWith([]).distinctUntilChanged()

然后我将assetDriver映射到驱动我的集合视图的dataSourceDriver。

我可以对assetDriver进行哪些更改以使其等待isGridViewScrolling变为false?谢谢。

我的应用程序中有一个集合视图,当有新内容或删除内容时,它将以动画刷新。但是,我不希望用户滚动时刷新它,因为它会导致...

ios swift system.reactive rx-swift rx-cocoa
1个回答
0
投票

让我们看一些大理石图!

© www.soinside.com 2019 - 2024. All rights reserved.