Как получить заголовок для UIButton, когда он нажат
Я пытаюсь узнать, что такое название UIButton, для которого UIButton был нажат в следующем коде.
на viewDidLoad заголовок кнопки выводится на консоль, используя:
NSLog(@"The button title is %@ ", btn.titleLabel.text);
Я хотел бы получить этот заголовок, когда вместо нажатия кнопки.
спасибо за любую помощь
:)
// Create buttons for the sliding category menu.
NSMutableArray* buttonArray = [NSMutableArray array];
NSArray * myImages = [NSArray arrayWithObjects:@"category-cafe-unsel.png", @"category-food-unsel.png", @"category-clothing-unsel.png", @"category-health-unsel.png", @"category-tech-unsel_phone.png" , @"category-tech2-unsel.png", @"catefory-theatre-unsel.png", @"category-travel-unsel.png", nil];
// only create the amount of buttons based on the image array count
for(int i = 0;i < [myImages count]; i++)
{
// Custom UIButton
btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setFrame:CGRectMake(0.0f, 20.0f, 52.0f, 52.0f)];
[btn setTitle:[NSString stringWithFormat:@"Button %d", i] forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:[myImages objectAtIndex:i]] forState:UIControlStateNormal];
NSLog(@"The button title is %@ ", btn.titleLabel.text);
[btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[buttonArray addObject:btn];
NSLog(@"Button tag is: %d",btn.tag);
}
Ответы
Ответ 1
В ваших действиях:
- (void) buttonPressed:(UIButton*) sender {
NSLog(@"The button title is %@",sender.titleLabel.text);
}
Изменить: Или, как прокомментировал Юлиан: sender.currentTitle
, но это может быть nil
, см. Комментарии Майкла.
Ответ 2
У вас должна быть функция где-то...
- (void)buttonPressed:(id)sender
Просто поместите это внутри...
- (void)buttonPressed:(id)sender
{
UIButton *someButton = (UIButton*)sender;
NSLog(@"The button title is %@ ", [someButton titleForState:UIControlStateNormal]);
//You should also be able to use...
//NSLog(@"The button title is %@ ", someButton.titleLabel.text);
}
Ответ 3
NSString * strButtonTitle = [btnButton titleForState:state];
где состояние:
UIControlStateNormal,
UIControlStateHighlighted,
UIControlStateDisabled,
UIControlStateSelected,
UIControlStateFocused,
UIControlStateApplication,
UIControlStateReserved
Для вашего требования
NSString * strButtonTitle = [btnButton titleForState:UIControlStateSelected];
Это метод получения заголовка для разных состояний кнопки в любой момент времени в программе... Но на основе ответа на вопрос от Зафода хорошо.