Заголовки разделов сбрасываются для Tableview - PullRequest
0 голосов
/ 08 мая 2020

У меня есть расширяемая таблица с настраиваемыми заголовками. Когда я загружаю tableview, я устанавливаю альфа для нескольких разделов в зависимости от того, есть ли в них какие-либо элементы.

Initial State

Я устанавливаю альфа обратно на 1, как только у меня есть некоторые элементы в этих разделах.

Проблема, с которой я столкнулся, заключается в том, что как только я нажимаю на любой из разделов, чтобы развернуть этот раздел, он просто сбрасывает представление для всех заголовков, которые находятся ниже выбранного, и просто удаляет альфа-канал. Для Ex Если я нажму на 1-й, все заголовки станут альфа-1, но если я нажму на 4-й, только 4-й и 5-й станут альфа-1. Например, если я нажму 1, это покажет -

1st selected one

Чтобы получить сворачиваемый и расширяемый вид, я использую следующий код для обновления sh раздела -

    let indexSet: IndexSet = IndexSet(integer: section)
    self.filterTableView.beginUpdates()
    self.filterTableView.reloadSections(indexSet, with: UITableView.RowAnimation.fade)
    self.filterTableView.endUpdates()

способ установки заголовка показан ниже -

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "FilterOptionHeaderView") as! FilterOptionHeaderView

    let filterHeader = self.filterHeaders[section]
    let selectedCount = self.selectedItems[filterHeader.key]?.count ?? 0
    if selectedCount > 0 {
        headerView.headerLabel.text = filterHeader.name + "(\(selectedCount))"
    } else {
        headerView.headerLabel.text = filterHeader.name
    }

    headerView.tag = kHeaderSectionTag + section

    let headerTapGesture = UITapGestureRecognizer()
    headerTapGesture.addTarget(self, action: #selector(sectionHeaderTapped(_:)))
    headerView.addGestureRecognizer(headerTapGesture)

    if self.sectionItems[section].isEmpty || self.sectionItems[section].count < 1 {
        headerView.alpha = 0.5
    } else {
        headerView.alpha = 1
    }

    return headerView
}

Я также пробовал установить альфа-канал в didEndDisplayingHeaderView, но все еще не работает. Пожалуйста, дайте мне знать, как этого добиться. Я знаю, что все заголовки сбрасываются, потому что стрелка развернутого направления также возвращается в исходное состояние, хотя у меня есть анимация вращения, которая появляется, а затем сбрасывается.

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