2009-05-28 6 views
0

J'utilise le code comme ceciComment est-ce que je peux allouer le textfield chaque fois que la fonction de délégué est appelée?

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tv { 
    return 3; 
} 

- (NSInteger)tableView:(UITableView *)tv numberOfRowsInSection:(NSInteger)section { 
    if(section==2) 
     return 20; 
    else 
     return 1; 

} 

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *MyIdentifier = @"MyIdentifier"; 

    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 

    //if (cell == nil) 
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"MyIdentifier"]autorelease]; 

    // Configure the cell 
    switch (indexPath.section) { 
     case 0: 
     { 
      textField=[[[UITextField alloc]initWithFrame:CGRectMake(5, 10, 290, 70)]autorelease]; 
      textField.delegate=self; 
      textField.keyboardType=UIKeyboardTypeURL; 
      textField.autocorrectionType=YES; 
      textField.textColor=[UIColor blackColor]; 
      [email protected]"Enter feed url"; 
      [cell.contentView addSubview:textField]; 
      break; 
     } 
     case 1: 
     { 
      textField1=[[[UITextField alloc]initWithFrame:CGRectMake(5, 10, 290, 70)]autorelease]; 
      textField1.delegate=self; 
      textField1.keyboardType=UIKeyboardTypeURL; 
      textField1.textColor=[UIColor blackColor]; 
      textField1.autocorrectionType=YES; 
      [email protected]"Enter starting url"; 
      [cell.contentView addSubview:textField1]; 
      break; 
     } 
     case 2: 
     { 
      cell.text=[[PopeularSiteArray objectAtIndex:indexPath.row]objectForKey:@"Title"]; 
      break; 
     } 
     default : 
      break; 

    } 
    return cell; 
} 

Quand je défilement mon tableview le champ de texte doit alloc chaque fois que la fonction de délégué appelé ... J'ai changé ce code comme quand le champ de texte est rien que ce sera créé, mais que temps, il montre les valeurs de déchets dans le champ de texte.

Que pourrais-je utiliser ici?

Répondre

0

Vous devez toujours conserver une référence sur les contrôles que vous ajoutez aux cellules UITableView: UITextFiled, UISwitch, etc. Vous pouvez ainsi interagir avec le contrôle et obtenir/définir la valeur plus facilement. Sinon, vous devez trouver la bonne cellule avec cellForRowAtIndexPath et essayer d'obtenir les contrôles enfants.

Pour résoudre votre problème:

  1. Ajouter textFieldFeedURL et textFieldStartingURL en tant que membres de la classe (dans votre fichier .h).
  2. Allouer Une fois que ces membres viewDidLoad ou cellForRowAtIndexPath
    if (textFieldFeedURL != nil) { 
    textFieldFeedURL = [[UITextField alloc] initWithFrame:CGRectMake(5, 10, 290, 70)]; 
    }
  3. Ajoutez les champs de texte aux cellules cellForRowAtIndexPath avec addSubview.
  4. Libère les champs de texte dans dealloc.

Si votre application dispose de dizaines de contrôles, vous pouvez conserver une référence dans un NSMutableArray.

J'espère avoir bien compris votre question. Bonne chance!

Questions connexes