У меня есть общий шаблон UITableView
с дополнительным контроллером представления, который выдвигается сверху при выборе строки. Чтобы дать пользователю некоторый контекст, когда он закрывает второй контроллер представления и возвращается к табличному представлению, этот первый контроллер представления имеет следующее:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if let index = tableView.indexPathForSelectedRow {
tableView.deselectRow(at: index, animated: animated)
}
}
Это приводит к этому непреднамеренному и резкому переходу, при котором отменившая выборка ячейка затемняет свой фон, прежде чем вернуться к нормальной жизни:
![jarring animation](https://i.stack.imgur.com/SWId4.gif)
Я ожидал, что он перейдет из выбора частично подавленного состояния, оставив его непосредственно обратно в нормальное темное состояние.
(Ячейка находится в стадии разработки - она далеко не закончена)
Следуя предложениям здесь на самом деле не вариант, так как я хочу сохранить подсказку контекста, и ячейка в целом должна по-прежнему иметь белый фон.
В ответ на вопрос Рико, ячейка создается как пара .swift
и .xib
, иерархия представлений:
![Interface Builder view hierarchy](https://i.stack.imgur.com/Drq6k.png)
Swift делает очень мало - устанавливает .textInsets
на две метки, рисует индикатор раскрытия в кнопке.