Подтвердить что ты не робот

Получить текст кнопки от IBAction - iPhone

Когда вызывается IBAction:

-(IBAction) onClick1: (id) sender;

Что передается в отправителе? Поскольку он подключился через IB, я не уверен. Мой вопрос заключается в том, как заставить текст кнопки быть переданным объектом (скорее всего, NSString), чтобы я мог вызвать его внутри реализации действия.

-(IBAction) onClick1: (id) sender {
  NSLog(@"User clicked %@", sender);
  // Do something here with the variable 'sender'
}
4b9b3361

Ответ 1

На самом деле:

-(IBAction) onClick1: (id) sender {
  NSLog(@"User clicked %@", sender);
  // Do something here with the variable 'sender'
}

sender не является NSString, а типом id. Это просто элемент управления, который отправил событие. Поэтому, если ваш метод запускается нажатием кнопки, будет отправлен объект UIButton, который был нажат. Вы можете получить доступ ко всем стандартным UIButton методам и свойствам программно.

Ответ 2

sender должен быть элементом управления, инициировавшим действие. Однако вы не должны предполагать его тип, и вместо этого следует оставить его как id. Вместо этого проверьте класс объекта в фактическом методе следующим образом:

- (IBAction)onClick1:(id)sender {
    // Make sure it a UIButton
    if (![sender isKindOfClass:[UIButton class]])
        return;

    NSString *title = [(UIButton *)sender currentTitle];
}

Ответ 3

-(IBAction)onClick:(id) sender {
     UIButton *btn = (UIButton *)sender;

    //now btn is the same object. And to get title directly
    NSLog(@"Clicked button: %@",[[btn titleLabel] text]);
}

Ответ 4

Просто напишите следующий код

-(IBAction) getButtonTitle:(id)sender
{
     UIButton *button = (UIButton *)sender; 
     NSString *buttonTitle = button.currentTitle;
     NSLog(@"Button Title %@",buttonTitle);

}

Вот оно... вы сделали!!!

Ответ 5

Отправитель должен быть определен как идентификатор типа, а не int или NSString. Отправитель - это фактический объект, вызывающий метод; если вы подключили его к кнопке, это будет UIButton, если это текстовое поле, UITextField. Вы можете использовать это, чтобы получить информацию из элемента управления (например, текущее строковое значение текстового поля) или сравнить его с переменной экземпляра IBOutlet, если у вас несколько элементов управления, подключенных к одному и тому же методу действий.

Ответ 6

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

NSLog(@"Clicked button: %@",[[sender titleLabel] text]);

Чтобы ответить на ваш вопрос, идентификатор является объектом из IB.

Ответ 7

Чтобы извлечь текст с помощью кнопки:

 NSLog(@"Date::%@",[DateButton titleForState:UIControlStateNormal]);          

Здесь DateButton - это имя UIButton.