Как определить, какая кнопка была нажата - PullRequest
0 голосов
/ 10 марта 2012

У меня есть кнопка. Когда пользователь отправляет форму, изображение кнопки должно измениться на DONE.PNG, иначе оно останется SUBMIT.PNG.

Мне нужно знать следующее;

1.) Как мы можем написать метод, чтобы узнать, на какую кнопку нажал пользователь. (Если он нажал кнопку, когда на ней было изображение DONE.PNG или SUBMIT.PNG)

событие нажатия моей кнопки -(void)buttonClicked : (id)sender {}

Ответы [ 3 ]

1 голос
/ 10 марта 2012

Обычно вы устанавливаете тег UIButton.

-Интерфейс или раскадровка вы делаете это под информацией об элементе UIButton.

-Программически вы делаете это так: myButton.tag = 23;

Затем в кнопке щелкаете вы делаете это:

UIButton* senderButton = (UIButton*) sender;
if(senderButton.tag==23) {
   // It's the button as submit
   // Set button image
   senderButton.tag = 5;
}
if(senderButton.tag==5) {
   // Button is done
}

Надеюсь, у вас все получится:)

0 голосов
/ 11 марта 2012

Поскольку вы используете одну кнопку и меняете только ее изображение, есть два простых способа:

  1. Проверьте название изображения кнопки, если оно DONE.PNG, затем сделайте то, что требуется, и измените изображение в противном случае.

  2. Имеется переменная, либо вы можете взять целое число (это поможет вам, если у вас будет еще большее количество изменений изображения на одной кнопке), чтобы отслеживать состояние кнопки / изображение.

Например, мы будем typedef buttonState и проверим его на предмет подходящего случая.

В .h файле

// Перед объявлением интерфейса ..

typedef enum
{
   ButtonStateDone = 1,
   ButtonStateSubmit,
  //any other state that it may have.
} ButtonState 

// в объявлении интерфейса ..

ButtonState buttonState; // это переменная уровня класса, которую мы будем использовать для отслеживания состояния кнопки.

В .m файле

Изначально установите buttonState, как вы показываете его при первом просмотре. предположим, кнопка показывает DONE.PNG итак buttonState = ButtonStateDone;

Теперь, в действии кнопки вы измените это

if(buttonState == ButtonStateDone)
{
 //do something and change button state.
}
if(buttonState == ButtonStateSubmit)
{
 //do something and change button state.
}

Здесь я использовал typedef, это полезно, если вам нужно иметь более 2 состояний для кнопки, иначе вы можете просто использовать переменную BOOL.

0 голосов
/ 10 марта 2012

Вы можете добавить тег к кнопке, т. Е. NSInteger buttonTag = [тег отправителя], а затем иметь условные операторы для проверки значений тега, чтобы определить, какая кнопка была нажата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...