У меня есть лучший способ динамически скрывать статические ячейки и даже секции без каких-либо взломов.
Установка высоты строки в 0 может скрыть строку, но это не сработает, если вы хотите скрыть всюраздел, который будет содержать некоторые пробелы, даже если вы скроете все строки.
Мой подход заключается в создании массива разделов из статических ячеек.Затем содержимое табличного представления будет управляться массивом раздела.
Вот пример кода:
var tableSections = [[UITableViewCell]]()
private func configTableSections() {
// seciton A
tableSections.append([self.cell1InSectionA, self.cell2InSectionA])
// section B
if shouldShowSectionB {
tableSections.append([self.cell1InSectionB, self.cell2InSectionB])
}
// section C
if shouldShowCell1InSectionC {
tableSections.append([self.cell1InSectionC, self.cell2InSectionC, self.cell3InSectionC])
} else {
tableSections.append([self.cell2InSectionC, self.cell3InSectionC])
}
}
func numberOfSections(in tableView: UITableView) -> Int {
return tableSections.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableSections[section].count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return tableSections[indexPath.section][indexPath.row]
}
Таким образом, вы можете собрать весь свой код конфигурации без необходимости писатьнеприятный код для расчета количества строк и разделов.И, конечно же, больше нет 0
высоты.
Этот код также очень прост в обслуживании.Например, если вы хотите добавить / удалить больше ячеек или разделов.
Аналогичным образом вы можете создать массив заголовков заголовков разделов и массив заголовков нижнего колонтитула разделов для динамической настройки заголовков разделов.