Voici une solution qui semble bonne sous iOS6/7/8/9 .
Mise à jour 2016-06-10 : cela fonctionne toujours avec iOS 9.3.3
Merci pour tout votre soutien, ceci est maintenant sur CocoaPods/Carthage/SPM à https://github.com/fulldecent/FDTextFieldTableViewCell
En gros, on prend les actions UITableViewCellStyleValue1
et agrafer un UITextField
où le detailTextLabel
est censé être. Nous obtenons ainsi un placement automatique pour tous les scénarios : iOS6/7/8/9, iPhone/iPad, Image/Non-image, Accessoire/Non-accessoire, Portrait/Paysage, 1x/2x/3x.
Remarque : il s'agit d'utiliser le storyboard avec un UITableViewCellStyleValue1
cellule de type nommé "mot".
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
cell = [tableView dequeueReusableCellWithIdentifier:@"word"];
cell.detailTextLabel.hidden = YES;
[[cell viewWithTag:3] removeFromSuperview];
textField = [[UITextField alloc] init];
textField.tag = 3;
textField.translatesAutoresizingMaskIntoConstraints = NO;
[cell.contentView addSubview:textField];
[cell addConstraint:[NSLayoutConstraint constraintWithItem:textField attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:cell.textLabel attribute:NSLayoutAttributeTrailing multiplier:1 constant:8]];
[cell addConstraint:[NSLayoutConstraint constraintWithItem:textField attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:cell.contentView attribute:NSLayoutAttributeTop multiplier:1 constant:8]];
[cell addConstraint:[NSLayoutConstraint constraintWithItem:textField attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:cell.contentView attribute:NSLayoutAttributeBottom multiplier:1 constant:-8]];
[cell addConstraint:[NSLayoutConstraint constraintWithItem:textField attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:cell.detailTextLabel attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]];
textField.textAlignment = NSTextAlignmentRight;
textField.delegate = self;
return cell;
}
0 votes
J'ai réussi à le faire fonctionner. Mais seulement pour quelques champs. Rencontrez-vous des problèmes lorsque vous avez plusieurs champs dans la table ou un seul ?
0 votes
J'ai juste besoin que ça fonctionne pour 2 champs... Cela ne fonctionne pas pour l'instant, même si j'essaie pour un seul champ. Pouvez-vous poster votre implémentation qui fonctionne ? Merci PEZ !
0 votes
Avez-vous essayé l'échantillon EditableDetailView ? Écrivez la question ici aussi puisque vous ne pouvez pas encore commenter les réponses.
0 votes
Bonjour, mes amis, est-il possible d'ajouter plusieurs champs de texte dans un tableau ? stackoverflow.com/questions/19621732/
0 votes
Salut Mathieu, je voulais juste faire un suivi et demander si la réponse ci-dessous a fonctionné pour toi.
2 votes
Pourquoi toutes les réponses sur le web se résument-elles à
CGRectMake(A_MAGIC_NUMBER, ANOTHER_MAGIC_NUMBER, YET_ANOTHER_HARDCODED_MAGIC_NUMBER, OH_HERES_ANOTHER_MYSTERIOUS_HARDCODED_MAGIC_NUMBER)
? D'où viennent ces chiffres ?0 votes
Est-il possible de faire cela uniquement avec le constructeur d'interface ?