2010-08-13 4 views
0

Salut tout le monde, j'avais une question sur la modification de la valeur d'une cellule de tableau et le retour de la valeur éditée à la cellule d'origine.Renvoyer une valeur d'une vue

J'ai un UITableView qui contient 5 sections de 1 rang chacune. Au sein cellForRowAtIndexPath je donne les résultats suivants:

static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    NSString *fieldTitle; 
    switch (indexPath.section) 
    { 
     case 0: 
      fieldTitle = @"First Name"; 
      break; 
     case 1: 
      fieldTitle = @"Last Name"; 
      break; 
     case 2: 
      fieldTitle = @"Company"; 
      break; 
     case 3: 
      fieldTitle = @"Email Address"; 
      break; 
     case 4: 

       fieldTitle = @"Password"; 
       break; 
    } 

cell.textLabel.text = fieldTitle; 

Lorsqu'une ligne est cliqué, didSelectRowAtIndexPath est tiré comme suit:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

    AddField *addField = [[AddField alloc] initWithStyle:UITableViewStyleGrouped]; 

    addField.field = cell.textLabel.text; 
    addField.title = cell.textLabel.text; 
    addField.value = cell.detailTextLabel.text; 

    [self.navigationController pushViewController:addField animated:YES]; 

} 

Ceci met en place une autre UITableView qui contient une section et une ligne. Cette table utilise une cellule personnalisée que j'ai écrite qui contient un champ de texte que l'utilisateur peut modifier. L'utilisateur peut cliquer sur un bouton pour revenir à la vue précédente.

Ma question est la suivante: comment obtenir la valeur entrée par l'utilisateur dans la vue AddField dans l'étiquette detailText de la cellule de tableau sélectionnée dans la vue précédente? Cette fonctionnalité serait très similaire à l'ajout du titre d'un nouvel événement dans l'application de calendrier natif de l'iPhone.

Merci pour toute aide que je peux obtenir, et laissez-moi savoir si vous avez besoin de plus d'informations.

Répondre

0

Avez-vous essayé d'appeler reloadData sur la table d'origine? Bien sûr, vous auriez besoin de chnage votre code afin que fieldTitle récupère ses valeurs dans un tableau de NSStrings ...... et définisse la source de données tableview sur ce tableau ....

0

Vous utiliseriez des délégués pour cela. Déclarer un protocole qui est votre délégué cellulaire comme suit (de la mémoire si des excuses si elle ne compile pas):

@protocol CellDelegate 

@required 

- (void) fieldValueChanged:(AddField *)field; 

@end 

Ajouter un « délégué id » à votre classe de cellules personnalisées et ajoutez une propriété (nonatomic, assignez) et le synthétiser.

Ensuite, lorsque vous configurez votre cellule didSelectRowAtIndexPath vous effectuez les opérations suivantes:

[cell setDelegate:self]; 

maintenant en vous voir contrôleur vous implémentez simplement que le protocole (CellDelegate), mettre en œuvre la méthode fieldValueChanged .... ce sera appelé par la cellule.

Maintenant dans la cellule lorsque la valeur est modifiée, appelez simplement [delegate fieldValueChanged: addfield];

REMARQUE: vous devriez vraiment configurer le champ AddField dans la classe de cellule personnalisée que vous écrivez ...

Questions connexes