Удаление строки из UITableView вызывает проблемы заголовка раздела? - PullRequest
0 голосов
/ 01 марта 2019

У меня есть 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
    }

Все отображается правильно и выглядит так:

Properly rendered UITableView

Однако, когда я иду, чтобы удалить UITableViewCell путем вызова self.entryTableView?.deleteRows(at: [indexPath], with: .automatic), после выполнения анимации заголовок раздела не отображается должным образом.Вот результат рендеринга:

Incorrectly rendered UITableView

На этом снимке экрана вы заметите, что я удалил строку из раздела от 9 марта 2019 года.После этого заголовок раздела для раздела от 26 марта 2019 года не отображается вообще.Если прокрутить таблицу вниз, а затем снова прокрутить вверх, заголовки разделов будут отображаться правильно, как и ожидалось.

Я никогда не видел ничего подобного раньше, и этого не произойдет, если я удалю свой пользовательский * 1025.* реализация и просто использовать titleForHeaderInSection.Однако это не вариант, потому что мне нужно изменить цвет фона заголовка раздела, чтобы он соответствовал нашей теме пользовательского интерфейса.Кто-нибудь сталкивался с этим раньше?Есть идеи, в чем проблема?

1 Ответ

0 голосов
/ 02 марта 2019

Я думаю, что может быть две потенциальные проблемы.

  1. Не могли бы вы проверить, удаляете ли вы элемент dataSource перед вызовом

    self.entryTableView?.deleteRows(at: [indexPath], with: .automatic)

  2. let keys = Array(self.journalEntries.keys.sorted())

Этот ключ меняется после удаления элемента?Что может привести к неожиданному поведению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...