Tengo un UITableView con celdas personalizadas. Esta celda personalizada se ve como una celda normal con Estilo "Detalle a la izquierda". Pero mi celda personalizada tiene una etiqueta de detalle y un campo de texto para permitir al usuario editar el texto. Tengo un botón Guardar donde quiero guardar todos los datos ingresados por el usuario. Inventé la celda personalizada con este tutorial: http://agilewarrior.wordpress.com/2012/05/19/how-to-add-a-custom-uitableviewcell-to-a-xib-file-objective-c/#comment-4883indexPathForCell de UITableView: devuelve siempre 0 como indexPath.row
Para obtener los datos del usuario, establecí el delegado del campo de texto en el controlador de vista de tabla (self) e implementé el método textFieldDidEndEditing :. En este método, solicito la vista padre del campo de texto (= celda) y solicito el indexPath de esta celda. El problema es que siempre obtengo 0 para indexPath.row, sin importar qué celda edite. ¿Qué estoy haciendo mal?
Aquí está mi código:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:[CustomCell reuseIdentifier] forIndexPath:indexPath];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell = self.customCell;
self.customCell = nil;
}
cell.label.text = @"Some label text";
cell.editField.delegate = self;
cell.accessoryType = UITableViewCellAccessoryNone;
return cell;
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
CustomCell *cell = (CustomCell *) textField.superview;
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
NSLog(@"the section is %d and row is %d", indexPath.section, indexPath.row);
...
}
EDIT: acabo de saber, que el indexPath devuelto es nulo. Entonces, si es nulo, obtengo los valores estándar 0, eso está bien. Pero ahora: ¿por qué obtengo nil para indexPath?
Este es un hilo similar que dice el motivo de que http://stackoverflow.com/questions/6930026/tableviewindexpathforcell-returns-nil –