Configurar varias secciones en UITableView

He configurado una vista adecuada con celdas personalizadas.

Me gustaría que estas en secciones con un título. Mirando la foto a continuación estoy buscando el siguiente layout:

Sección – Mi perfil Celda personalizada – wwwwwwwwwwwwww …
Sección – Aplicación
Celda personalizada – Juegos
Celda personalizada – Compartir
Celda personalizada – Tarifa
Celda personalizada: configuration
Celda personalizada: ayuda
Celda personalizada: cerrar session

Puedo ver cómo agregar una sección y controlar las filas en una sección, pero esto duplica las celdas en varias secciones, no estoy seguro de cómo tener una sección con una fila y otra con 6 filas. También quiero diseñar estas secciones para mostrar, algo así como el estilo de menu de Facebook.

¿Debería crear celdas personalizadas para las secciones reales en su lugar y no tener ninguna acción en la selección de sección (celda)?

Aquí está el código para UITableView

static NSString *CellIdentifier = @"Cell"; LeftMenuTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"LeftMenuTableViewCell" owner:nil options:nil]; for (UIView *view in views) { if([view isKindOfClass:[UITableViewCell class]]) { cell = (LeftMenuTableViewCell*)view; } } } 

introduzca la descripción de la imagen aquí

Puede definir el número de secciones y filas en el siguiente:

 - (UIView *) tableview:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView view; if(section == 0) { // Initialise view for section 1 } else { // Initialise view for section 2 } } -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 2; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return ((section == 0) ? 1 : 6); } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // return appropriate cell(s) based on section if(indexPath.section == 0) { // Return 1 cell } else if(indexPath.section == 1) { switch(indexPath.row) { case 0: // Initialize cell 1 break; case 1: // Initialize cell 2 break; ... } } return cell; }