Удалить раздел из таблицы - PullRequest
0 голосов
/ 07 апреля 2019

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

Допустим, у меня есть три раздела, которые определены в массиве:

var sections = ["section1", "section2", "section3"]

и вот протоколы табличного представлениядля секций

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

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

@objc func switchStateDidChange(_ sender: UISwitch) {
    sections.remove(at: 1)

    // My problem is here
    tableView.deleteSections(IndexSet, with: .top)
}

В этой функции сначала я сказал, что количество секцийв массиве разделов будет уменьшен на единицу, затем удалите раздел 1

, но если я добавлю 1 в IndexSet, я получу эту ошибку:

Невозможно преобразовать значение типа 'Int'к ожидаемому типу аргумента' IndexSet '

Как я могу сказать tableView.deleteSections удалить раздел 1?

Ответы [ 3 ]

2 голосов
/ 07 апреля 2019

Вы можете попробовать

tableView.deleteSections([0], with: .top)

изменить значение на любой нужный вам индекс

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

При обновлении UITableView.

  • убедитесь, что вы сделали несколько вещей. Убедитесь, что вы удалили данные из массива, используемого tableView.

  • Убедитесь, что при обновлении массива он не обновляет tableView, например, вы являетесь наблюдателем или didSet в массиве.

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

  • Сообщите tableView, что вы собираетесь делать обновления

let removeSection = 0
if tableView.numberOfSections >= removeSection+1 {
    tableView.beginUpdates()
    tableView.deleteSections([removeSection], with: .top)
    tableView.endUpdates()     
}
0 голосов
/ 07 апреля 2019

Вы должны создать конкретный IndexSet экземпляр из Int

tableView.deleteSections(IndexSet(integer: 1), with: .top)

или использовать init(arrayLiteral: метод IndexPath, который выводит Intмассив

tableView.deleteSections([1], with: .top)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...