2013-07-26 3 views
-2

Я пытаюсь написать программу, в которой пользователь нажимает UIButton, а затем текст кнопки появится в UILabel. Однако несколько кнопок могут инициировать полученный метод, и поэтому текст внутри метки будет изменяться. У меня есть клавиатура с номером, которую я создал с кнопками, аналогичными кнопкам телефона, а затем, когда нажимается кнопка, номер на кнопке добавится в конец строки в UILabel. Например, если нажата кнопка «2», на этикетке появится две. Если нажата кнопка «3», этикетка будет перезаписывать себя, чтобы сказать «23.». Пример моего кода для этого ниже:ObjectiveC: нажатие кнопки приводит к появлению номера на экране?

NSString *str = [answerField text]; 
    if ([[sender titleLabel] isEqual:@"0"]){ 
    [str stringByAppendingString:@"0"]; 
    } 

Логично, что код, похоже, будет работать. answerField - это имя UILabel, и если нажатая кнопка имеет метку «0» в виде строкового литерала, я хочу добавить нуль в конец строки. К сожалению, когда я запускаю программу, ничего не происходит с меткой. Я могу нажать кнопку, но ярлык не меняется. Есть идеи? Заранее спасибо!

+0

Является ли 'sender.titleLabel' действительно' NSString'? Или это - вывод из его названия - 'UILabel'? Если это так, 'isEqual:' не вернет 'YES' ... –

+0

Я не уверен ... Отправитель - это объект, который вызывает метод (в данном случае одну из пронумерованных кнопок с клавиатуры). Я пытаюсь добавить текст на кнопку в конец текста внутри UILabel, answerField. Похоже, что сравнение с isEqual фактически избыточно, поэтому я удалил его из кода. Тем не менее, я все еще не уверен, как добавить текст кнопки в строку в answerField ... – jfherrm

+0

Отправитель - это 'UIControl', который отправляет это действие. Это ваш 'UIButton'? Если это так, является ли его свойство titleLabel '' NSString'' или 'UILabel'? –

ответ

0

Вам нужно установить текст ярлыка в свою новую строку ... Кроме того, заявление if кажется ненужным, вы можете просто добавить все, что есть [UIButton titleLabel]text.

NSString *str = [answerField text]; 
str = [str stringByAppendingString:[[sender titleLabel] text]]; 
[answerField setText:str]; 
+0

Прошу прощения, но я забыл упомянуть, что у меня есть команда [answerField setText: str]. Однако, когда я сжимаю код до того, что вы разместили, я получаю исключение, в котором говорится, что [sender titleLabel] является аргументом nil ... – jfherrm

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