RxSwift
とRxCocoa
を使用するように書き換え中のiOSアプリケーションがあります。実際にはうまくいきますが、コレクションビューのデータバインディングに問題があります。 viewWillAppear
は、ビューコントローラ上で呼び出されたときに私のアプリでRxCocoaデータバインディングにより、コレクションビューがスクロールします。
、私は、例えば、データバインディングを実行します。
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)
`` `
これは素晴らしい作品 - 私のデータが正しく私のコレクションにバインドされています再生回数
しかし、現在表示されていないビューコントローラのアクティブなバインディングを避けるために、私はviewWillDisappear
が呼び出されるたびにdisposeBag
をデアロします。その後、vcが再び表示されるたびに、処分バッグを再作成してデータを再バインドします。
私の問題は、コレクションビューにデータを再バインドすると、コンテンツのオフセットがリセットされることです。アイテムをタップしたときにコンテンツをリストし、新しいView Controllerに移動するシナリオを考えてみましょう。リストに戻るたびに、新しいデータバインドによってスクロールビューが上にスクロールします。
コレクションビューのデフォルトの動作では、データソースが変更されてもreloadData
が呼び出されてもオフセットを保持します。私はここで何かを逃しているのですか、何か間違っていますか?