Cómo obtener un UITableViewCell de una de sus subvistas

tengo unUITableView con unUITextField en cada uno de losUITableViewCells. Tengo un método en mi ViewController que controla el evento "Did End On Exit" para el campo de texto de cada celda y lo que quiero hacer es actualizar los datos de mi modelo con el nuevo texto.

Lo que actualmente tengo es:

- (IBAction)itemFinishedEditing:(id)sender {
    [sender resignFirstResponder];

    UITextField *field = sender;
    UITableViewCell *cell = (UITableViewCell *) field.superview.superview.superview;

    NSIndexPath *indexPath = [_tableView indexPathForCell:cell];

    _list.items[indexPath.row] = field.text;
}

Por supuesto haciendofield.superview.superview.superview Funciona pero simplemente parece tan hacky. ¿Hay una forma más elegante? Si pongo la etiqueta de laUITextField alindexPath.row de la celda esta encellForRowAtIndexPath ¿esa etiqueta siempre será correcta incluso después de insertar y eliminar filas?

Para aquellos que prestan mucha atención, se podría pensar que tengo uno..superview demasiados allí, y para iOS6, tendrías razón. Sin embargo, en iOS7 hay una vista adicional (NDA impide que se forme) en la jerarquía entre la vista de contenido de la celda y la celda en sí. Esto ilustra precisamente por qué hacer la cosa de supervisión es un poco intrépido, ya que depende de saber cómoUITableViewCell está implementado, y puede romper con las actualizaciones del sistema operativo.

Respuestas a la pregunta(4)

Su respuesta a la pregunta