У меня есть UITableView
с пользовательскими заголовками разделов, реализованными как UITableViewCell
s.Соответствующий метод из моего UITableViewDelegate
выглядит следующим образом:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
log.debug("Creating header for section \(section)")
let headerCell = tableView.dequeueReusableCell(withIdentifier: "SectionHeaderCell") as! JournalEntrySectionHeaderTableViewCell
let keys = Array(self.journalEntries.keys.sorted())
let date = keys[section]
let dateFormatter = DateFormatter()
let template = "MMMMd, yyyy"
dateFormatter.setLocalizedDateFormatFromTemplate(template)
let dateStr = dateFormatter.string(from: date)
headerCell.titleLabel?.text = dateStr
let theme = ThemeManager.shared.currentTheme()
headerCell.backgroundColor = theme.entryListHeaderBackgroundColor
headerCell.titleLabel?.textColor = theme.entryListHeaderTextColor
return headerCell
}
Все отображается правильно и выглядит так:
Однако, когда я иду, чтобы удалить UITableViewCell
путем вызова self.entryTableView?.deleteRows(at: [indexPath], with: .automatic)
, после выполнения анимации заголовок раздела не отображается должным образом.Вот результат рендеринга:
На этом снимке экрана вы заметите, что я удалил строку из раздела от 9 марта 2019 года.После этого заголовок раздела для раздела от 26 марта 2019 года не отображается вообще.Если прокрутить таблицу вниз, а затем снова прокрутить вверх, заголовки разделов будут отображаться правильно, как и ожидалось.
Я никогда не видел ничего подобного раньше, и этого не произойдет, если я удалю свой пользовательский * 1025.* реализация и просто использовать titleForHeaderInSection
.Однако это не вариант, потому что мне нужно изменить цвет фона заголовка раздела, чтобы он соответствовал нашей теме пользовательского интерфейса.Кто-нибудь сталкивался с этим раньше?Есть идеи, в чем проблема?