0

我有一个我正在重写以使用的 iOS 应用程序RxSwiftRxCocoa. 它工作得很好,但我在集合视图数据绑定方面遇到了问题。

在我的应用程序中,我viewWillAppear在视图控制器上调用时执行数据绑定,例如:

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)

```

这很好用 - 我的数据正确绑定到我的集合视图。

但是,为了避免对当前不可见的视图控制器进行活动绑定,我会在调用disposeBag时解除分配。viewWillDisappear然后,每当再次显示 vc 时,我都会重新创建处理包并重新绑定数据。

我的问题是,当我将数据重新绑定到集合视图时,内容偏移量被重置。考虑一个场景,当一个项目被点击时,我列出内容并导航到一个新的视图控制器。每当我回到列表时,新的数据绑定将导致滚动视图滚动到顶部。

集合视图的默认行为是保持其偏移量,即使数据源更改并被reloadData调用。我在这里遗漏了什么还是我做错了什么?

4

1 回答 1

0

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

如果您不熟悉这些术语,请查看冷热 Observables。如果您通过远程 API 调用获取您的内容,即使在视图控制器导航离开后,保持对您获取的数据的引用可能是明智之举。这样您就可以确保在返回原始 VC 时不会再次获取数据。

于 2017-10-22T22:37:18.907 回答