Получить текст кнопки от IBAction - iPhone
Когда вызывается IBAction:
-(IBAction) onClick1: (id) sender;
Что передается в отправителе? Поскольку он подключился через IB, я не уверен. Мой вопрос заключается в том, как заставить текст кнопки быть переданным объектом (скорее всего, NSString), чтобы я мог вызвать его внутри реализации действия.
-(IBAction) onClick1: (id) sender {
NSLog(@"User clicked %@", sender);
// Do something here with the variable 'sender'
}
Ответы
Ответ 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
.