gpt4 book ai didi

ios - RxCocoa 数据绑定(bind)导致 Collection View 滚动到顶部

转载 作者:行者123 更新时间:2023-11-30 12:03:58 24 4
gpt4 key购买 nike

我有一个 iOS 应用程序,正在重写以使用 RxSwiftRxCocoa。它工作得很好,但我在 Collection View 数据绑定(bind)方面遇到问题。

在我的应用程序中,当在 View Controller 上调用 viewWillAppear 时,我会执行数据绑定(bind),例如:

let view = collectionView
getStuff().bind(to: view.rx.items(cellIdentifier: "Cell", cellType: Cell.self)) {
row, item, cell in
cell.setup(with: item)
}.disposed(by: disposeBag)

```

这非常有效 - 我的数据已正确绑定(bind)到我的 Collection View 。

但是,为了避免当前不可见的 View Controller 具有事件绑定(bind),每当调用 viewWillDisappear 时,我都会释放 disposeBag 。然后,每当 vc 再次显示时,我都会重新创建 dispose bag 并重新绑定(bind)数据。

我的问题是,当我将数据重新绑定(bind)到 Collection View 时,内容偏移量被重置。考虑这样一个场景:当点击某个项目时,我会列出内容并导航到新的 View Controller 。每当我返回列表时,新的数据绑定(bind)都会导致 ScrollView 滚动到顶部。

Collection View 的默认行为是保持其偏移量,即使数据源发生更改并且调用了 reloadData 也是如此。我在这里错过了什么还是我做错了什么?

最佳答案

听起来您将 CollectionView 绑定(bind)到的数据在清除 disposeBag 后已完全释放。然后,当再次调用 viewWillAppear 时,您的 Observable 可能会暂时没有数据,从而将偏移量重置为 0.0。

如果您不熟悉这些术语,请查看热 Observables 和冷 Observables。如果您通过远程 API 调用获取内容,那么即使在 View Controller 离开后,仍保留对所获取数据的引用可能是明智之举。这样您就可以确保返回原始 VC 时不会再次获取数据。

关于ios - RxCocoa 数据绑定(bind)导致 Collection View 滚动到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46879651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com