Tengo un UITable que contiene algunas aduanas UITableCells. Esas celdas contienen algunos UILabels y un UITextField. El origen de datos de la tabla proviene de la propiedad de un controlador principal. (Este controlador también es el delegado y dataSource para la tabla).Recargue un UITable sobre la marcha al editar un UITextField dentro de una de las celdas
Aquí hay una captura de pantalla simplificada de la interfaz de usuario:
Ahora, es necesario que actualice "sobre la marcha" el contenido de todos los UILabels cuando el usuario edita una de las UITextFields. Para hacerlo, en el momento estoy escuchando el evento "Edición modificada" en el nivel de UITextField. Esto desencadena la acción siguiente:
- (IBAction) editChangeHandler: (id) sender {
MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[[delegate.viewController.myDataSourceArray objectAtIndex:self.rowIndex] setANumber: [theTextField.text intValue]];
[delegate.viewController reloadRows];
}
El método reloadRows en el viewController es como tal:
- (void) reloadRows {
NSLog(@"called reloadRows");
//perform some calculations on the data source objects here...
[theUITable reloadData];
}
Mi problema aquí es que cada vez que el usuario cambia el valor en el campo, el método reloadRows es éxito llamado, aparentemente es el ReloadData pero también causa que el teclado sea descartado.
Por lo tanto, al final, el usuario solo puede tocar una tecla cuando edita el TextField antes de cerrar el teclado y volver a cargar la tabla.
¿Alguien sabe una solución a esto o ha experimentado el mismo problema?
Arf! Gracias ! La desactivación del teclado se explicó por el restablecimiento del estado de la celda. ¿Cómo podría no haber visto eso?:-) Como necesitaba que las etiquetas de la fila actual también se actualizaran, terminé siguiendo su segunda sugerencia y escribí un nuevo método en el controlador que solo actualiza las etiquetas de las filas individuales. – Saze