Expandir y queuepsar secciones de tablaView iOS?

Soy capaz de expandir y contraer las secciones de tablaView con éxito, pero no puedo hacerlo para secciones individuales hasta el momento. Así todas las secciones se queuepsan o se expanden al mismo time, lo que es porque llamo [tableView reloadData] ¿Cómo puede ¿Expansión o queuepso de una sección en particular?

Así es como lo estoy haciendo actualmente.

  -(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { headerLabel = [[UILabel alloc]init]; headerLabel.tag = section; headerLabel.userInteractionEnabled = YES; headerLabel.backgroundColor = [[UIColor grayColor]colorWithAlphaComponent:0.2]; headerLabel.text = [menuCategoryArray objectAtIndex:section]; headerLabel.frame = CGRectMake(5, 0, tableView.tableHeaderView.frame.size.width, tableView.tableHeaderView.frame.size.height); UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(headerClicked:)]; tapGesture.cancelsTouchesInView = NO; [headerLabel addGestureRecognizer:tapGesture]; return headerLabel; } -(void)headerClicked:(UIGestureRecognizer*)sender { if (!isShowingList) { isShowingList=YES; [self.menuTableView reloadData]; UILabel *lbl = (UILabel*)sender.view; NSLog(@"header no : %d", lbl.tag); }else{ isShowingList=NO; [self.menuTableView reloadData]; UILabel *lbl = (UILabel*)sender.view; NSLog(@"header no : %d", lbl.tag); } } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ if (isShowingList) { return [[[[jsonArray valueForKey:@"menus"] valueForKey:@"menuName"] objectAtIndex:section] count]; }else{ return 0; } return 0; }