2009-07-30 16 views
7

Quiero editar el nombre de usuario del usuario dentro de una 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 seleccionar un UITextField?

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

El código sería algo como:

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
userName.selected = TRUE; 
} 

Respuesta

14
- (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 asume que no hay manera más rápida de saber qué objeto UITextField es en la que la célula, y que sabe con seguridad que el UITextField será la primera subvista.

También podría desear comprobar que [textField isFirstResponder] - no tiene sentido convertirlo en el firstResponder si ya lo es. Esto puede no ser necesario sin embargo.

Cuestiones relacionadas