Сохранить выбор в UITableView после того, как rx-swift перезагрузит таблицу - PullRequest
0 голосов
/ 07 января 2019

У меня есть таблица, которая выглядит примерно так:

data
    .drive(tableView.rx.items(cellIdentifier: "cell")) { index, model, cell in
        // update cell
    }
    .disposed(by: disposeBag)

Когда пользователь выбирает ячейку, а затем изменяет данные, rx-swift перезагрузит представление таблицы, и выбор будет потерян.

У меня есть ссылка на выбранный indexPath, но как выбрать способ выбора?

На данный момент моя единственная идея будет выглядеть примерно так:

data
    .delay(0.2) // make shure this happens after the reload
    .drive(onNext: { model in
        // select tableview cell
    })

Который явно отстой: - (

Решит ли RxDataSources эту проблему? Если да, то как?

Или есть другие способы сохранить этот выбор?

1 Ответ

0 голосов
/ 07 января 2019

Да, RxDataSources решит проблему, или вы можете свернуть свои собственные. Решение состоит в том, чтобы перезагрузить только те ячейки, которые нуждаются в перезагрузке, а не все табличное представление. Это то, чего не делает базовая система RxCocoa.

Чтобы решить проблему, вам нужен собственный источник данных. Вот один, который я написал, используя DifferenceKit для отслеживания изменений. (https://github.com/dtartaglia/RxMultiCounter/blob/master/RxMultiCounter/RxExtensions/RxSimpleAnimatableDataSource.swift)

...