Скрыть несколько ячеек heightForRowAtIndexPath static tableview swift
Я хочу изменить высоту нескольких статических ячеек таблицы на ноль и вернуться к нормальной.
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if reminderHidden && indexPath.section == 1 && indexPath.row == 1 {
return 0
}
else {
return super.tableView(tableView, heightForRowAtIndexPath: indexPath)
}
}
Я могу обновить значение bool & выше метод хорошо работает для сокрытия одной статической ячейки. Но он останавливается после возврата одного значения. Я хотел бы спрятать две статические ячейки и вернуть их в нормальное состояние, когда я изменяю одно значение bool.
2 ответа
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.row == 1 && toggle.on == false {
return 0.0
}
if indexPath.row == 2 {
if toggle.on == false || pickerVisible == false {
return 0.0
}
return 165.0
}
return 44.0
}
Для более подробной информации посетите мой блог:
http://blog.apoorvmote.com/how-to-show-and-hide-static-cells-with-uiswitch/
Что вам нужно сделать, это вернуть 0,1 в этой функции. 0 является значением по умолчанию (44px). Однако вы обнаружите, что при этом возникает много мелких проблем. Такие как:
- Когда размеры ячеек после перезагрузки изменятся, они будут размещены неправильно.
- Когда клетки должны быть скрыты, вы можете иногда видеть их содержимое под ячейками вокруг них.
Я считаю, что лучшее решение - поместить (если это возможно) клетки, которые будут спрятаны в группы. Затем в источнике данных установите количество строк равным 0 для этого раздела, когда он скрыт. Есть еще проблемы с этим подходом, но не так много.