Pregunta

Quiero editar el nombre de usuario del usuario dentro de un UITableView. Agregué un UITextField al UITableViewCell y esto parece funcionar muy bien. Pero cuando el usuario toca la celda (incluso fuera del campo de texto), espera editar.

¿Cómo selecciono programáticamente el campo de texto?

El código se vería algo así como:

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
userName.selected = TRUE;
}
¿Fue útil?

Solución

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
   UITableViewCell *cellSelected = [tableView cellForRowAtIndexPath: indexPath];
   UITextField *textField = [[cellSelected.contentView subviews] objectAtIndex: 0];
   [textField becomeFirstResponder];

   [tableView deselectRowAtIndexPath: indexPath animated: NO];

}

Esto supone que no tienes una manera más rápida de saber qué objeto UITextField está en qué celda, y que estás seguro de que UITextField será la primera subvista.

También puede querer poner un cheque para [textField isFirstResponder] - no tiene sentido convertirlo en el primerResponder si ya lo es. Sin embargo, esto puede no ser necesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top