2010-10-25 9 views
0

J'ai un UILabel que j'ai créé sur l'une de mes vues dans mon application. Je l'ai mis à un texte statique dans IB, mais je vais modifier ce texte par programmation.UILabel n'affiche pas la chaîne correcte

Voici comment j'essayais de le faire.

fahrenheitLabel.text = (@"Temperature: %@", text); 
//fahrenheitLabel is my UILabel 
//"text" is a NSString 

Je me attendais à la sortie soit Temperature: 84, par exemple.

Quel que soit l'ordre dans lequel je l'ai essayé, je reçois toujours 84.

Quand je fais NSLog(@"Temperature: %@", text); j'obtiens le résultat désiré dans la console.

Y a-t-il une raison pour laquelle mon UILabel n'affiche pas le même résultat que l'appel NSLog?

Nous vous remercions de votre aide!

Répondre

3

devrait être:

fahrenheitLabel.text = [NSString stringWithFormat:@"Temperature: %@",text]; 
+0

Merci, cela a fait l'affaire! Seriez-vous assez aimable pour expliquer brièvement pourquoi mon code n'a pas fonctionné? –

+1

Bien sûr. Donc NSLog() est similaire à - [NSString stringWithFormat:]. Les deux attendent une spécification de format et zéro ou plusieurs paramètres supplémentaires qui sont appliqués à cette spécification. OTOH, - [UILabel setText:] est quelque chose de totalement différent. Il attend un NSString et rien d'autre et ne fait rien de plus que copier cette chaîne dans l'étiquette. –

+0

Oh, donc c'était en gros voir ce dernier NSString et sauter le premier. Merci pour l'aide! Sur une note de côté, vous ne trouveriez pas un moyen simple de définir une certaine partie de ce UILabel à une autre couleur le feriez-vous? :) –

2

NSLog (,); est un appel de fonction qui est configuré pour le formatage du texte et fonctionnera. (,); n'a rien à voir avec la mise en forme du texte et ne fonctionnera pas.

En fait (,) est juste l'opérateur de virgule. Ceux-ci seront évalués dans l'ordre et le dernier retourné. Par exemple:

int a = 1; 
int b = 2; 
int c = 3; 
int x = a, b, c; 

partirez x avec la valeur de c, soit 3.

Dans votre cas, l'opérateur virgule va simplement retourner le dernier élément qui est « texte » et qui est la raison pour laquelle vous voyez 84 tout le temps.

Vous devez utiliser les appels de formatage NSString pour combiner les chaînes comme vous le souhaitez.

+0

Merci d'avoir expliqué le problème en détail! Je comprends maintenant. Merci! –