Да, это определенно возможно, хотя сейчас я борюсь с той же проблемой.Мне удалось заставить клетки спрятаться, и все работает хорошо, но в настоящее время я не могу аккуратно оживить их.Вот что я нашел:
Я скрываю строки, основываясь на состоянии переключателя ВКЛ / ВЫКЛ в первой строке первого раздела.Если переключатель включен, под ним находится 1 строка в том же разделе, в противном случае есть 2 разные строки.
У меня есть селектор, вызываемый при переключении переключателя, и я устанавливаю переменную, чтобы указать, какое состояние IЯ нахожусь в. Затем я вызываю:
[[self tableView] reloadData];
Я переопределяю функцию tableView: willDisplayCell: forRowAtIndexPath: , и если ячейка должна быть скрыта, я делаю это:
[cell setHidden:YES];
Это скрывает ячейку и ее содержимое, но не удаляет занимаемое ею пространство.
Чтобы удалить пробел, переопределите функцию tableView: heightForRowAtIndexPath: и верните 0 для строк, которые должны быть скрыты.
Вам также необходимо переопределить tableView: numberOfRowsInSection: и вернуть количество строк в этом разделе.Здесь нужно сделать что-то странное, чтобы, если ваш стол был сгруппированным, закругленные углы появлялись в правильных ячейках.В моей статической таблице есть полный набор ячеек для раздела, поэтому есть первая ячейка, содержащая параметр, затем 1 ячейка для параметров состояния ON и еще 2 ячейки для параметров состояния OFF, всего 4 ячейки.Когда опция включена, я должен вернуть 4, это включает скрытую опцию, так что последняя отображаемая опция имеет закругленную рамку.Когда опция отключена, последние две опции не отображаются, поэтому я возвращаю 2. Это все кажется неуклюжим.Извините, если это не очень понятно, это сложно описать.Просто чтобы проиллюстрировать настройку, приведем конструкцию секции таблицы в IB:
- Строка 0: опция с переключателем ВКЛ / ВЫКЛ
- Строка 1: отображается при включенной опции
- Строка 2: отображается при выключенной опции
- Строка 3: отображается при выключенной опции
Таким образом, когда опция включена, таблица отображает две строки:
- Строка 0: опция с переключателем ВКЛ / ВЫКЛ
- Строка 1: отображается при включенной опции
Когда опция выключена, таблица отображает четыреряды:
- Строка 0: опция с переключателем ВКЛ / ВЫКЛ
- Строка 1: отображается при включенной опции
- Строка 2: отображается при выключенной опции
- Строка 3: отображается, когда опция выключена
Этот подход не выглядит правильным по нескольким причинам, настолько, насколько я до сих пор использовал свои эксперименты, поэтому, пожалуйста,дайте мне знать, если вы найдете лучший способ.Проблемы, которые я наблюдал до сих пор:
Неправильно говорить таблице, что число строк отличается от того, которое предположительно содержится в базовых данных.
Я не могу оживить изменения.Я попытался использовать tableView: reloadSections: withRowAnimation: вместо reloadData, и результаты, кажется, не имеют смысла, я все еще пытаюсь заставить это работать.В настоящее время, по-видимому, происходит то, что tableView не обновляет правильные строки, поэтому одна остается скрытой, которая должна отображаться, и под первой строкой остается пустота.Я думаю, что это может быть связано с первым пунктом о базовых данных.
Надеюсь, кто-то сможет предложить альтернативные методы или, возможно, как расширить с помощью анимации, но, возможно, это поможет вамначалось.Приношу свои извинения за отсутствие гиперссылок на функции, я вставил их, но они были отклонены фильтром спама, потому что я довольно новый пользователь.