2010-04-09 3 views
0

J'ai une vue de détail qui consiste en une vue de table avec quelques rangées de données. Je peux très bien remplir les lignes et passer de la vue parente à la sous-vue aussi. Cette vue détaillée doit permettre à l'utilisateur de sélectionner une seule valeur, en plaçant un coche dans la cellule puis en revenant à la vue parente (où la valeur sélectionnée devient la propriété cell.textLabel.text de la cellule à partir de laquelle la vue détaillée a été appelée). Tout cela fonctionne dès maintenant. Cependant, lorsque l'utilisateur appuie sur la cellule de la vue parente pour revenir à la vue de détail (pour changer de sélection), ma coche a disparu et je ne peux pas, pour la vie de moi, trouver comment la faire rester.Comment gérer une liste à sélection unique (exclusive)?

Voici mon cellForRowAtIndexPath: Méthode:

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

    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 
     } 

    NSString *labelText = [[phones objectAtIndex:indexPath.row] valueForKey:@"phoneNumberLabel"]; 
    cell.textLabel.text = labelText; 
    NSString *currentLabel = [ruleBuilder.tableView cellForRowAtIndexPath:selectedIndexPath].textLabel.text; 
    if (labelText == currentLabel) { 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
     } 

    NSString *detailText = [[phones objectAtIndex:indexPath.row] valueForKey:@"phoneNumber"]; 
    cell.detailTextLabel.text = detailText; 
    return cell; } 

J'ai vérifié le code exemple d'Apple pour la gestion liste exclusive dans le tableau Voir le Guide de programmation, mais l'extrait semble incomplète, et je ne peux pas trouver les associés code dans l'exemple de code d'Apple. Cela ne semble pas être si difficile à faire.

Répondre

0

... Whoops le problème est dans cette ligne:

if (labelText == currentLabel) { 

La comparaison de deux chaînes se fait comme suit:

if ([labelText isEqualToString:currentLabel]) { 

qui a résolu le problème immédiatement.

Questions connexes