Какая кнопка была нажата iPhone и вопрос Obj-C

Я новичок, только начал работать с iPhone и Obj-C уже месяц.

У меня есть две кнопки, обе они вызывают одну и ту же функцию следующим образом

[play addTarget:self action:@selector(showQstn:) forControlEvents:UIControlEventTouchUpInside];

Внутри функции showQstn я хочу знать, какая кнопка была нажата. Есть идеи? Альтернативные идеи тоже приветствуются.

ТИА


person pMan    schedule 09.07.2009    source источник


Ответы (2)


Предполагая, что showQstn: объявлен как

-(void) showQstn:(id)sender;

Аргумент sender является инициирующим объектом события.

РЕДАКТИРОВАТЬ: Вы также можете различать кнопки, используя tag свойство. Каждое представление имеет уникальный идентификатор tag (который можно установить программно или с помощью Interface Builder).

РЕДАКТИРОВАТЬ: UIButton не имеет свойства title, поэтому вы получаете ошибку. Он имеет titleForState:. Таким образом, вы должны изменить свой код на следующее:

NSString *title = [sender titleForState:UIControlStateNormal];
if ([title isEqualToString:@"PLAY!"]) {
  name.text = title;
}
person notnoop    schedule 09.07.2009

Вы получаете нажатую кнопку в качестве аргумента для вашего метода IBAction showQstn:. Вы можете установить тег на кнопках, а затем использовать [тег отправителя], чтобы определить, какой из них вызвал метод IBAction.

person Tom Dalling    schedule 09.07.2009