Ho un UITableView con celle personalizzate al suo interno. Questa cella personalizzata si presenta come una cella normale con lo stile "Dettaglio a sinistra". Ma la mia cella personalizzata ha un'etichetta di dettaglio e un campo di testo, per consentire all'utente di modificare il testo. Ho un pulsante Salva dove voglio salvare tutti i dati inseriti dall'utente. Ho creato la cella personalizzata utilizzando questo tutorial: http://agilewarrior.wordpress.com/2012/05/19/how-to-add-a-custom-uitableviewcell-to-a-xib-file-objective-c/#comment-4883IndexPathForCell di UITableView: restituisce sempre 0 come indexPath.row
Per ottenere i dati utente, ho impostato il delegato del campo di testo sul controller della vista tabella (self) e implementato il metodo textFieldDidEndEditing :. In questo metodo chiedo la vista padre del campo di testo (= cella) e chiedo il indexPath di questa cella. Il problema è che ottengo sempre 0 per indexPath.row, non importa quale cella modifico. Che cosa sto facendo di sbagliato?
Ecco il mio codice:
- (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: ho appena scoperto, che l'indexPath restituito è pari a zero. Quindi se è nulla ottengo i valori standard 0, va bene. Ma ora: perché ottengo nil per indexPath?
Questo è un thread simile che spiega il motivo di http://stackoverflow.com/questions/6930026/tableviewindexpathforcell-returns-nil –