2010-08-26 13 views
0

J'essaye d'écrire un convertisseur DST basique. J'ai un contrôle segmenté avec 3 choix, leurs titres (étonnamment) sont Distance, Vitesse et Temps. J'ai 2 champs de texte d'entrée et un bouton de calcul, ainsi que 2 étiquettes pour chaque champ de texte avec le type de mesure nécessaire et ses unités. Faire une sélection sur le contrôle segmenté devrait mettre à jour la vue en conséquence. Les variables ont toutes été déclarées comme IBOutlets, @property, @synthesize, et le code se trouve dans une méthode IBAction, qui est connectée au contrôle segmenté. Le code suivant ne fonctionne pas, est-ce que quelque chose me manque complètement? (NSLog montre le titre correct)Cocoa Touch - Le titre UISegmentedControl ne fonctionne pas dans l'instruction IF/ELSE

NSString *choice;  
choice = [dstChoiceSegmentedControl titleForSegmentAtIndex: dstChoiceSegmentedControl.selectedSegmentIndex]; 
    NSLog(@"Choice |%@|", choice); 
    if (choice == @"Distance") { 
     firstLabel.text = @"Speed:"; 
     firstUnitsLabel.text = @"kts"; 
     secondLabel.text = @"Time:"; 
     secondUnitsLabel.text = @"hrs"; 
     answerUnitsLabel.text = @"nm"; 
    } else if (choice == @"Speed") { 
     firstLabel.text = @"Distance:"; 
     firstUnitsLabel.text = @"nm"; 
     secondLabel.text = @"Time:"; 
     secondUnitsLabel.text = @"hrs"; 
     answerUnitsLabel.text = @"kts"; 
    } else if (choice == @"Time") { 
     firstLabel.text = @"Distance:"; 
     firstUnitsLabel.text = @"nm"; 
     secondLabel.text = @"Speed:"; 
     secondUnitsLabel.text = @"kts"; 
     answerUnitsLabel.text = @"hrs"; 
    } 

Merci pour votre aide (et je l'espère, ce n'est pas une erreur stupide qui me regardait fixement droit dans le visage)!

Répondre

0

Vous ne pouvez pas comparer les chaînes de cette façon. Vous devez faire:

[choice isEqualToString:@"Distance"]; 

Mais si j'étais vous, je vérifierais plutôt les indices.

edit: Pour l'expliquer plus loin: ce que vous faites avec choice == @"Distance" compare un pointeur avec une chaîne, ce qui ne fonctionnera pas. Vous devez appeler la méthode de comparaison des objets chaîne comme indiqué ci-dessus.

+0

Eh bien, la chaîne elle-même est aussi un pointeur. –

+0

Merci, cela a fonctionné un régal. Comme je suis relativement nouveau à la programmation, pourquoi est-il préférable de vérifier les indices (ce que je fais maintenant) plutôt que de savoir si les chaînes correspondent? –

+0

Il faut moins de ressources pour comparer les nombres entiers, alors il faut comparer les chaînes et donc être un peu plus rapide. Cependant, vous ne sentirez probablement pas la différence. – Toastor