При создании ячейки создайте 2 UIViews, один из которых будет содержать все обычное содержимое, а другой - раскрывающийся список.
Установите маску автоматического изменения размера раскрывающегося вида таким образом, чтобы она имела негибкую высоту и гибкое верхнее поле.(остальное как обычно) Установите маску автоматического изменения размера обычного представления содержимого, чтобы оно имело негибкие поля и гибкие ширину и высоту.
Установить тег для обоих представлений, каждый.
Сделать добавление раскрывающегося представления, прежде чем представление содержимого сделает его скрытым представлением содержимого (также представление содержимого не может иметь прозрачный фон)
В методе делегата табличного представлениядля того, чтобы при нажатии на ячейку установить маску автоматического изменения размера добавленного представления содержимого с использованием тегов, чтобы добраться до нее, так же, как и раньше, за исключением негибкой высоты и гибкого нижнего поля.И добавьте:
[tableView beginUpdates];
[tableView endUpdates];
Создайте переменную экземпляра для хранения объекта NSIndexPath.Установите переменную в индексный путь нажатой ячейки.
В методе делегата табличного представления для установки высоты ячеек добавьте оператор if, чтобы высота раскрывающегося списка добавлялась к высоте выбранной ячейки (которая будет в переменной экземпляра).описано выше)
Добавьте необходимые операторы if в метод нажатой ячейки, чтобы определить, следует ли отображать раскрывающийся список или скрывать его.
Это всего лишь приблизительный указатель на один метод добавления раскрывающихся списков в ячейки, есть и другие способы, которые могут быть лучше.Я, вероятно, добавлю немного кода и подробностей, когда доберусь до своего ноутбука.