Свернуть раздел, когда щелкните ячейку в UITableView в Swift - PullRequest
0 голосов
/ 17 мая 2018

У меня есть UITableView, в котором номер раздела и номер ячейки под этими разделами поступают из моего сервиса.Номер раздела динамический и содержит динамическую ячейку под ним.Зависит от данных, поступающих с сервиса.Я хочу свернуть раздел, когда ячейка нажата.Каждый раздел должен свернуться при нажатии на ячейку под ним.Как я могу свернуть это?Я много искал его, но в основном результаты показывают, когда мы нажимаем на раздел, он разворачивается и сворачивается.Но я хочу свернуть раздел по щелчку ячейки.Мой код для размещения данных в заголовке раздела:

func numberOfSections(in tableView: UITableView) -> Int {

    if tableView == resMenuTableView{

        return subCategoryModel!.count
    }
    else
    {
        return AddonCategoryModel!.count
    }
}
 func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {

    if tableView == resMenuTableView{

        return subCategoryModel![section].subCatName

    }
    else
    {
         return AddonCategoryModel![section].name
    }
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    if tableView == resMenuTableView{
        return subCategoryModel![section].items.count
    }
    else
    {
        return AddonCategoryModel![section].addonItems.count
    }
}

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Примите глобальное значение Int без инициализации.

var selectedSection: Int!

При нажатии на ячейку присвойте индекс секции ячейке selectedSection и перезагрузите эту секцию. Если вы хотите свернуть оставшиеся разделы, просто перезагрузите весь просмотр таблицы, вместо этого перезагрузите только один раздел.

selectedSection = indexPath.section
tableView.reloadSections(IndexSet(integer: selectedSection), with: .top)

В методе numberOfCellsForSection проверьте, совпадают ли раздел и selectedSection. Если они одинаковые, вам нужно свернуть раздел, что означает, что вам нужно указать исходное количество строк.

0 голосов
/ 17 мая 2018

При нажатии на ячейку вы получите раздел от indexPath.section.Вы можете обновить viewState, чтобы установить флаг свертывания раздела, а затем перезагрузить таблицу.Разделу, для которого установлен флаг свертывания, присвойте количество строк 0 для этого раздела.

Если за один раз в таблице сворачивается только одна секция, вам будет легко справиться с логикой.

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