2009-12-03 7 views
0

je suis nouveau à l'iPhone ... essayer ce code, mais obtenir une erreur me aider ..TextField dans UITableView

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
........//// some code ...........////////// 
     CGRect frame = CGRectMake(5 ,10 , 320, 44); 
    UITextField *txtField = [[UITextField alloc]initWithFrame:frame]; 
    [txtField setBorderStyle:UITextBorderStyleNone]; 
    txtField.delegate=self; 
    switch (indexPath.row) { 
     case 0: 
      txtField.placeholder=editFrndBDb.frndName; 
      txtField.text=editFrndBDb.frndName; 
      txtField.tag=1; 
      break; 
     case 1: 
      txtField.placeholder=editFrndBDb.bDay; 
      txtField.text=editFrndBDb.bDay; 
      txtField.tag=2; 
      break; 
     case 2: 
      txtField.placeholder=editFrndBDb.frndNote; 
      txtField.text=editFrndBDb.frndNote; 
      txtField.tag=3; 
      break; 
     default: 
      break; 
    } 
    [cell.contentView addSubview:txtField]; 
    [txtField release]; 
    cell.selectionStyle=UITableViewCellSelectionStyleNone; 
    return cell;  
} 

-(IBAction) saveChanges:(id) sender 
{ 

    UITextField *name =(UITextField *)[self.viewWithTag:1]; 
    UITextField *bday= (UITextField *)[self.viewWithTag:2]; 

    UITextField *note=(UITextField *)[self.viewWithTag:3]; 
    //// some code //////////// 

i m en utilisant ce code pour afficher textfield dans tableview puis accéder à la valeur du champ de texte. B mais obtenir l'erreur dans la méthode "saveChange" "UITextField * nom = (UITextField *) [self.viewWithTag: 1]" erreur: - vue est quelque chose pas une structure ou une union. plz-moi hors de ce

Répondre

2

Votre textfield n'est pas une sous-vue de la vue de la classe ViewController (où vous référencez "self"). C'est à l'intérieur d'un UITAbleViewCell particulier. Vous devrez donc déterminer quelle cellule de table vous souhaitez utiliser pour le contenu de la vue texte et l'extraire de la vue de contenu de la cellule.

De plus, vous pourriez économiser quelques problèmes à l'avenir et vérifiez que vous obtenez une vue retourné en demander, par exemple:

UIView *aView = [someView viewWithTag:1]; 
if(aView != nil){ 
... 
}else{ 
... 
} 
2

ne sais pas si elle est une faute de frappe dans la question ou dans la Code:

[self.viewWithTag:1] 

mais vous ne devriez pas avoir un point là-bas:

[self viewWithTag:1] 
1

Votre code pour le sav La méthode devrait être la suivante:

-(IBAction) saveChanges:(id) sender 
{ 

    UITextField *name =(UITextField *)[self.view viewWithTag:1]; 
    UITextField *bday= (UITextField *)[self.view viewWithTag:2]; 

    UITextField *note=(UITextField *)[self.view viewWithTag:3]; 
    //// some code //////////// 
} 

Vous accédez à une sous-vue balisée de la vue relative au contrôleur dans lequel ce code est placé.