2009-07-30 7 views
7

Je souhaite modifier le nom d'utilisateur de l'utilisateur dans un UITableView. J'ai ajouté un UITextField à UITableViewCell et cela semble fonctionner très bien. Mais quand l'utilisateur touche la cellule (même en dehors du champ de texte), il s'attend à éditer.Comment sélectionner un objet UITextField?

Comment sélectionner le champ de texte par programmation?

Le code ressemblerait à quelque chose comme:

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

Répondre

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]; 

} 

Cela suppose que vous avez pas moyen plus rapide de savoir quel objet UITextField est dans quelle cellule, et que vous êtes sûr que le UITextField sera la première sous-vue.

Vous pourriez également vouloir mettre un contrôle pour [textField isFirstResponder] - aucun point en faisant le firstResponder s'il est déjà. Cela peut ne pas être nécessaire cependant.

Questions connexes