UITableView Section Index superposition de button de eliminación de fila

Después de muchas búsquedas en Google, Stackoverflow y la documentation de las manzanas, casi me he dado por vencido.

Estoy haciendo una aplicación para indexar clientes y debido a una list potencialmente muy larga, utilizo el índice de sección para navegar más rápido. Mi problema se muestra en la image a continuación.

http://i.stack.imgur.com/i2tTx.png

Cuando arrastro un elemento para revelar el button Eliminar, está parcialmente oculto debajo de la barra de índice de mi sección.

No tengo ningún ajuste de código tableview o tableviewcells ancho y el índice de sección realmente no se puede cambiar, en lo que a mí respecta.

EDITAR:

La pregunta es cómo puedo hacer que las celdas de tableview terminen antes de que se superpongan, por lo que el button de eliminar está completamente visible.

EDIT 2:

Ya intenté configurar el marco de la celda más pequeño sin ningún tipo de suerte.

cell.frame = CGRectMake(cell.frame.origin.x, cell.frame.origin.y, cell.frame.size.width-30, cell.frame.size.height); 

También probé lo mismo con tableview, pero como está en un UITableViewController, no se puede cambiar el tamaño.

 self.tableView.frame = CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y, self.tableView.frame.size.width-30, self.tableView.frame.size.height); 

Como una solución simple, resolvimos la superposition visual del índice estableciendo el color de background del índice en clearColor.

 self.tableView.sectionIndexBackgroundColor = [UIColor clearColor]; 

* Esto parece visualmente mejor, pero el índice seguirá superponiéndose a tableViewCell.

Otra solución posible sería ocultar la barra de índice al ingresar al modo de edición:

 // allow editing [self.tableView setEditing:YES animated:YES]; // hides the index self.tableView.sectionIndexMinimumDisplayRowCount = NSIntegerMax; 

El método inEditMode debería hacer el truco. A continuación increto un código completo que oculta el índice durante la edición y lo muestra nuevamente cuando finaliza la edición.

 -(void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath{ [self inEditMode:YES]; } -(void)tableView:(UITableView *)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath{ [self inEditMode:NO]; } //on self.editButtonItem click -(void)setEditing:(BOOL)editing animated:(BOOL)animated{ [super setEditing:editing animated:animated]; [self inEditMode:editing]; } -(void)inEditMode:(BOOL)inEditMode{ if (inEditMode) { //hide index while in edit mode self.tableView.sectionIndexMinimumDisplayRowCount = NSIntegerMax; }else{ self.tableView.sectionIndexMinimumDisplayRowCount = NSIntegerMin; } [self.tableView reloadSectionIndexTitles]; } 

Simplemente use este código antes de asignar cualquier subvista en cellForRowAtIndexPath

 for (id object in cell.contentView.subviews) { [object removeFromSuperview]; }