2010-10-25 5 views
0

У меня есть UILabel, который я создал на одном из своих представлений в своем приложении. Я установил статический текст в IB, но я собираюсь изменить этот текст программно.UILabel не отображает правильную строку

Вот как я пытался это сделать.

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

Я ожидал, что выход будет Temperature: 84, например.

Независимо от того, в каком порядке я пробовал, однако, я всегда получаю 84.

Когда я делаю NSLog(@"Temperature: %@", text); Я получаю желаемый результат в Консоли.

Есть ли причина, по которой мой UILabel не показывает тот же результат, что и вызов NSLog?

Благодарим за помощь!

ответ

3

Должно быть:

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

Спасибо, что сделал трюк! Будете ли вы любезны дать краткое объяснение, почему мой код не работает? –

+1

Конечно. Итак, NSLog() похож на - [NSString stringWithFormat:]. Оба ожидают спецификацию формата и нулевые или дополнительные параметры, которые применяются к этой спецификации. OTOH, - [UILabel setText:] - это нечто совершенно другое. Он ожидает NSString и ничего больше и не делает ничего, кроме как скопировать эту строку в метку. –

+0

О, так это было в основном наблюдение последнего NSString и пропущено первое. Спасибо за помощь! На боковой ноте вы бы не узнали простой способ установить определенную часть этой UILabel на другой цвет, не так ли? :) –

2

NSLog (,); это вызов функции, который настроен для форматирования текста и будет работать. (,); не имеет никакого отношения к формированию текста и не будет работать.

Фактически (,) является только оператором запятой. Они будут оцениваться по порядку, и последний возвращается. Например:

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

Уйдет й со значением с, то есть 3.

В вашем случае оператор запятой просто возвращают последний элемент, который является «текстом» и именно поэтому вы видите 84 все время.

Вы должны использовать вызовы формирования NSString для объединения строк так, как вы хотите.

+0

Спасибо за подробное объяснение проблемы! Теперь я понимаю. Благодаря! –

Смежные вопросы