deleteSections удалить только последний раздел - PullRequest
0 голосов
/ 07 апреля 2019

У меня есть статическое табличное представление, которое содержит три раздела

раздел 1 содержит 1 строку

раздел 2 содержит 1 строку

раздел 3 содержит 2 строки

У меня есть UISwitch в разделе 1, что, изменив его, раздел 2 должен быть удален или вставлен

Поскольку у меня есть статическая таблица, я только добавил numberOfSections протоколы. Также я создал массив с именем раздела,просто для подсчета количества разделов, не более того.

override func numberOfSections(in tableView: UITableView) -> Int {
    if exportDataSwitch.isOn {
        return sections.count - 1
    } else {
        return sections.count
    }
}

В функции, которая будет вызываться после включения или выключения переключателя, я написал эти коды

@objc func switchStateDidChange(_ sender: UISwitch) {
     if exportDataSwitch.isOn {
        tableView.beginUpdates()
        tableView.deleteSections([1], with: .fade)
        tableView.endUpdates()
     } else {
        tableView.beginUpdates()
        tableView.insertSections([1], with: .fade)
        tableView.endUpdates()
        }
    }

Проблема в том, когда я хочу удалить раздел 2 ([1]), я получил эту ошибку

Thread 1: signal SIGABRT

Но она отлично работает, когда я хочу удалить последний раздел (раздел 3 [2]).

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

1 Ответ

0 голосов
/ 08 апреля 2019

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

Кроме того, beginUpdates() и endUpdates() здесь не требуются, но используются при выполнении нескольких обновлений.

@objc func switchStateDidChange(_ sender: UISwitch) {
     if exportDataSwitch.isOn {
        sections.remove(at: 1)
        tableView.deleteSections([1], with: .fade)
     } else {
        sections.insert(“title”, at: 1)
        tableView.insertSections([1], with: .fade)
        }
    }

override func numberOfSections(in tableView: UITableView) -> Int {
    return sections.count
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if(section == 0) {
        return 1
    } else if(section == 1) {
        return 1
    } else if(section == 2) {
        return 2
    } else {
        return 0
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...