2009-02-23 10 views
0

Je suis en train d'essayer d'ajouter un UITextField à un UITableViewCell sur tableView: commitEditingStyle: forRowAtIndexPath :. Sur insertion, je veux ajouter un UITextField sur la cellule existante.iPhone: remplacement de la vue d'une cellule avec UITextField

-je configurer le textField avec quelque chose comme ceci:

-(void) setUpIndexField { 
    inputField = [[UITextField alloc] init]; 
    inputField.textAlignment = UITextAlignmentCenter; 
    inputField.borderStyle = UITextBorderStyleRoundedRect;  
    inputField.keyboardType = UIKeyboardTypeNamePhonePad; 
    inputField.delegate = self; 
} 

Puis, en commitEditingStyle, j'ai quelque chose comme:

- (void)tableView:(UITableView *)tv 
    commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
    forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSInteger row = [indexPath row]; 
    if (editingStyle == UITableViewCellEditingStyleInsert) { 
    if (row == 0) { 
     UITableViewCell *cell = [tv cellForRowAtIndexPath:indexPath]; 
     inputField.frame = [tv cellForRowAtIndexPath:indexPath].frame; 
     [cell.contentView addSubview:inputField]; 
     [inputField becomeFirstResponder]; 
     return; 
    } 
// more code etc. 
} 

Lorsque je clique sur l'accesseur Insérer (+), le textField ne se retrouve en effet sur l'écran, mais pas près de la cellule qui clique dessus. Il va dans une partie aléatoire de l'UIView, pas la cellule réelle pour l'indexPath à l'endroit où le + a été cliqué.

Un aperçu sur où je me suis trompé et comment je peux placer le UITextField sur la cellule où le clic a été fait serait idéal.

Répondre

1

Vous définissez le cadre de inputField sur le cadre de la cellule qui ne fera pas ce que vous voulez. Les vues à l'intérieur de la cellule utilisent le coin supérieur gauche du cadre comme 0,0. Votre cadre textfield devrait être:

inputField.frame = CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height); 

Depuis ce qui est relatif à ce superview qui placera le champ de texte de sorte qu'il recouvre complètement les autres vues dans cette cellule.

+0

Salut Squeegy, c'est presque ça. Le seul autre problème est maintenant la largeur de la cellule est 320, de sorte qu'il s'étend après la cellule lorsque le style est arrondi pour UITableView. Y at-il de toute façon à rester dans les limites de UITableViewCell et ne pas continuer après? – Coocoo4Cocoa

+0

sûr. Rendez la largeur et la hauteur plus courtes et augmentez légèrement l'origine x et y. Juste ajuster les valeurs jusqu'à ce que ça colle bien. –

Questions connexes