ПРОБЛЕМА: Перезагрузка раздела tableView скрывает другие разделы tableView. - PullRequest
0 голосов
/ 28 ноября 2018

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

  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
 if (ObjectDetails?.arrData[section].collapsed)!{
        return 0
    }
    else{
        return (ObjectDetails?.arrData[section].data.count)! - 1
    }
}
@objc func collapseSection(sender:UIButton)
{
    ObjectDetails?.arrData[sender.tag].collapsed = !(ObjectDetails?.arrData[sender.tag].collapsed)!
    self.tableView.beginUpdates()
    self.tableView.reloadSections(IndexSet(integer:sender.tag), with: .none)
    self.tableView.endUpdates()
}

Также обратите внимание, что если я пишу эту функцию с reloadData(), она работает нормально, но это медленно

@objc func collapseSection(sender:UIButton)
{
    ObjectDetails?.arrData[sender.tag].collapsed = !(ObjectDetails?.arrData[sender.tag].collapsed)!
    self.tableView.reloadData()
}

1 Ответ

0 голосов
/ 28 ноября 2018

Любой, кто может пройти через эту проблему

Итак, я нашел решение, и в соответствии с этим я обнаружил, что одна вещь - не использовать многоразовое представление, как ячейка в представлении заголовка, если выпри необходимости перезагрузить разделы по любому действию.если вы используете ячейку, не возвращайте полную ячейку, просто верните ее contentView.

До

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?{
    let headerView = tableView.dequeueReusableCell(withIdentifier: "headerCell") as! headerCell
    headerView.lblHeaderName.text = ObjectDetails?.arrData[section].data[0].key.Translate()
    headerView.btnCollapse.tag = section
    headerView.btnCollapse.addTarget(self, action: #selector(collapseSection(sender:)), for: .touchUpInside)
    if (ObjectDetails?.arrData[section].collapsed)!
    {
         headerView.btnCollapse.setTitle("+", for: .normal)
    }
    else{
        headerView.btnCollapse.setTitle("-", for: .normal)
    }
    return headerView
}

После

   func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?{
    let headerView = tableView.dequeueReusableCell(withIdentifier: "headerCell") as! headerCell
    headerView.lblHeaderName.text = ObjectDetails?.arrData[section].data[0].key.Translate()
    headerView.btnCollapse.tag = section
    headerView.btnCollapse.addTarget(self, action: #selector(collapseSection(sender:)), for: .touchUpInside)
    if (ObjectDetails?.arrData[section].collapsed)!
    {
         headerView.btnCollapse.setTitle("+", for: .normal)
    }
    else{
        headerView.btnCollapse.setTitle("-", for: .normal)
    }
    return headerView.contentView
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...