Как определить, какая кнопка была нажата из трех кнопок

У меня есть три кнопки, все они делают то же самое, что и в режиме segue. Все связаны с одним и тем же соединением.

- (IBAction)difficultyButtonPressed:(id)sender { // Any difficulty selected [self performSegueWithIdentifier:@"mainGameTurnGuess" sender:self]; } 

Мне нужно определить, какая кнопка была нажата в методе prepareForSegue . Как я могу определить, какая из трех кнопок нажата.

Не смотря на формулировку / текст на кнопке, поскольку это изменилось бы для локализации.

4 Solutions collect form web for “Как определить, какая кнопка была нажата из трех кнопок”

Вы можете наложить кнопку Taped с помощью значения Tag, предположим, что у вас есть кнопка «Дерево» для примера: –

 @property (nonatomic, strong) UIButton *btn1; @property (nonatomic, strong) UIButton *btn2; @property (nonatomic, strong) UIButton *btn3; 

Затем установите Tag of Button как: –

 btn1.tag=1; btn2.tag=2; btn3.tag=3; 

и установите для каждой кнопки одинаковое IBAction и: –

 [btn1 addTarget:self action:@selector(difficultyButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; [btn2 addTarget:self action:@selector(difficultyButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; [btn3 addTarget:self action:@selector(difficultyButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; - (IBAction)difficultyButtonPressed:(UIButton*)sender { NSLog(@"Button tag is %d",sender.tag); // you can use if else condition using sender.tag like if(sender.tag==1)//first button related identifire { [self performSegueWithIdentifier:@"mainGameTurnGuess_FirstButtonIdentirier" sender:sender]; } else if(sender.tag==2)//second button related identifier { [self performSegueWithIdentifier:@"mainGameTurnGuess_secondButtonIdentirier" sender:sender]; } else //Third button related identifier { [self performSegueWithIdentifier:@"mainGameTurnGuess_ThirdButtonIdentirier" sender:sender]; } } 

Для информации

Если вы используете id в IBAction вы получаете объект Button как: –

 - (IBAction)difficultyButtonPressed:(id)sender { UIButton *button = (UIButton *)sender; NSLog(@"Button tag is %d",button.tag); } 

сохраните тег кнопки в переменной экземпляра и посмотрите на эту переменную при вызове метода prepareForSegue

Вы можете пересылать по параметру sender отправленному на difficultyButtonPressed: как та кнопка, которая была нажата. То есть, если вы это сделаете:

 - (IBAction)difficultyButtonPressed:(id)sender { // Any difficulty selected [self performSegueWithIdentifier:@"mainGameTurnGuess" sender:sender]; } 

параметр sender отправленный в prepareForSegue:sender: будет нажата кнопка.

Вы также можете использовать кнопки Restoration Id. В prepareForSegue вы можете сделать следующее:

 UIButton *btnSender; if ([sender isMemberOfClass:[UIButton class]]) { btnSender = (UIButton *)sender; } // Then you can reference the Restoration Id or a tag of the clicked button to do further conditional logic if you want. if([btnSender.restorationIdentifier isEqualToString:@"myBtn1"]) { //do something } 

Я цитирую документацию на яблоко:

Поскольку segues можно запускать из нескольких источников, вы можете использовать информацию в параметрах segue и sender для устранения неоднозначности между различными логическими путями в вашем приложении. Например, если segue возник из представления таблицы, параметр отправителя будет идентифицировать ячейку представления таблицы, которую пользователь прослушивает. Вы можете использовать эту информацию для установки данных на контроллере представления назначения

  • Альтернативный ландшафт, вызванный нежелательным видом
  • объект не может быть nil - на segue?
  • Несколько нажатий Segues для одного контроллера просмотра в раскадровке
  • Как добавить ссылку на раскадровку в другой раскадровки
  • Внедрение Segue через код
  • Когда я использую prepareForSegue для передачи значения целевому контроллеру, возникают некоторые проблемы
  • swift: segue on button click
  • Невозможно настроить свойство контроллера назначения readyForSegue
  • Отклонить Popover, используя Unwind Segue в Xcode Storyboard
  • Медленное расширение рассылки iOS
  • Как подождать, пока еще один поток завершится, а затем продолжите с помощью segue?
  • Interesting Posts

    Неопределенные символы для архитектуры x86_64 на Xcode 6.1

    NSRegularExpression не может найти захват групповых совпадений

    Наложение двух видео с AVFoundation

    Xcode проверяет файл для готовности ARC, хотя он не был выбран в инструменте преобразования

    CGBitmapContextCreate для CV_8UC3 (для использования в OpenCV)

    IOS: открыть и закрыть некоторые контроллеры представлений

    Проблемы с ориентацией видео при экспорте с помощью AVMutableVideoComposition

    NSDateFormatter: Дата в соответствии с currentLocale, без года

    цвет фонового текста текста на странице pdf в iphone sdk

    Как мне ответить на GKTurnBasedExchange? Делегат GKLocalPlayerListener receivedExchangeReplies называется прерывистым

    Проверка XSD на iOS

    Движение и масштабирование изображенияPickerController не работает

    RestKit: управляемый объект, отображаемый внутри простого объекта Objective-C

    Рисование CIImage слишком медленное

    Пользовательские настройки центра уведомлений по умолчанию для приложения

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.