Я хочу иметь возможность определять, какая кнопка нажата. Интересно, есть ли какой-нибудь метод класса UIButton, который может вызываться автоматически при нажатии кнопки, что позволяет мне узнать текст или тег нажатой кнопки и передать его переменной? Или какой-нибудь метод события objective-c, который делает то же самое?
Я знаю, что эта тема была размещена здесь раньше. Обычный ответ, кажется, таков:
В файле .h
- (IBAction)buttonClicked:(UIButton *)sender;
В файле .m
- (IBAction)buttonPressed:(UIButton *)sender{
// Do something her to display which button pressed
}
Я также видел другие примеры с такими именами, как buttonPressed, onButtonTao и т. Д.
Поэтому я предполагаю, что этот метод нужно вызывать с каждой кнопки. Однако это не работает, xcode жалуется, когда я пытаюсь назначить один и тот же метод более чем одной кнопке.
В следующем примере, опубликованном здесь, в Stack, используется то же действие, но программно:
for( int i = 0; i < 5; i++ ) {
UIButton* aButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[aButton setTag:i];
[aButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
[aView addSubview:aButton];
}
// then ...
- (void)buttonClicked:(UIButton*)button
{
NSLog(@"Button %ld clicked.", (long int)[button tag]);
}
Итак, что мне здесь не хватает, почему xcode не принимает один и тот же метод для нескольких кнопок? И есть ли другой способ определить, какая кнопка нажата, без привязки определенного действия к каждой кнопке?