Question

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

Comment sélectionner par programme le champ de texte?

Le code ressemblerait à quelque chose comme:

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
userName.selected = TRUE;
}
Était-ce utile?

La solution

- (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 ne disposez d'aucun moyen plus rapide de savoir quel objet UITextField se trouve dans quelle cellule et que vous savez avec certitude que UITextField sera la première sous-vue.

Vous pouvez également vouloir cocher [textField isFirstResponder] - inutile de le définir comme premier répondeur, si tel est déjà le cas. Cela n’est peut-être pas nécessaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top