I used to take advantage of a UITableView and the methods
- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths
withRowAnimation:(UITableViewRowAnimation)animation
and
- (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths
withRowAnimation:(UITableViewRowAnimation)animation
to simulate and expand/collapse behaviour.
Refer to the documentation for more details.
I've used then selectable section headers (either via UIButton or gesture recognizers) to let the user expand/collapse.
There are also a lot of tutorials out there that are quite explanatory, using different techniques:
Finally you can take a look to this control that should provide the functionality that you are searching for:
UIExpandableTableView