Как предотвратить потерю UITableViewCell своего состояния выбора при обновлении раздела? - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть UITableViewCell, который выбран, но когда я вызываю этот код:

self.tableView.beginUpdates()
self.tableView.reloadSections(IndexSet(integer: 0), with: .none)    
self.tableView.endUpdates()

Он теряет свое состояние выбора, но даже если я делаю эти две вещи:

self.tableView.beginUpdates()
self.tableView.reloadSections(IndexSet(integer: 0), with: .none)
tableView.selectRow(at: IndexPath(row: 0, section: 0), animated: false, scrollPosition: .none)    
self.tableView.endUpdates()

и

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// get cell
cell.setSelected(true, animated: false)

Ячейка теряет свое состояние выбора на секунду, что является сбойным.Мне бы хотелось, чтобы внешний вид ячейки оставался неизменным даже в мгновение ока.

Примечание. Я поместил операторы журнала в обычные методы shouldHighlight, didUnSelect и т. Д., Но у этих парней ничего не получилось.

1 Ответ

0 голосов
/ 06 декабря 2018

Не заключайте строки кода в beginUpdates() и endUpdates().Это запускает «транзакцию анимации» для анимации манипуляций tableView вместе.Я предполагаю, что tableView в этом случае запускает анимацию, даже если вы установите .none в качестве анимации, что приведет к сбою.

...