Не удается изменить фоновое изображение пользовательской кнопки UIButton для выбранного состояния

#iphone #background #uibutton

#iPhone #фон #uibutton

Вопрос:

С моим приведенным ниже кодом кажется, что кнопка все время находится в нормальном состоянии (всегда зеленая), хотя я нажимаю на нее.

 UIButton *gumb = [UIButton buttonWithType:UIButtonTypeCustom];
     gumb.frame = CGRectMake(4, 40, 104, 37);
     gumb.tag=0;
    [gumb setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [gumb setTitleColor:[UIColor blackColor] forState:UIControlStateSelected];
    [gumb setBackgroundImage:[UIImage imageNamed:@"greenButton.png"] forState:UIControlStateNormal];
     [gumb setBackgroundImage:[UIImage imageNamed:@"whiteButton.png"] forState: UIControlStateSelected];
  

Если я установлю изображение для обычного состояния на whiteButton, а для выбранного — на GreenButton, то кнопка всегда будет белой и никогда не будет зеленой.

Комментарии:

1. При нажатии на кнопку она изменит состояние на подсвеченное . Не выбрано состояние. Выбранное состояние используется для кнопок вкладок

Ответ №1:

 [gumb setBackgroundImage:[UIImage imageNamed:@"whiteButton.png"] forState: UIControlStateHighlighted] 
  

используйте это вместо выбранного изображения

Ответ №2:

Я не уверен, что выбранное состояние используется только для кнопок вкладок, потому что я пробовал, как это делал DixieFlatline, и иногда менял изображение кнопки. Но метод tt.Kilew определенно стоит попробовать. Просто попробуйте: [gumb setBackgroundImage: [UIImage imageNamed:@»whiteButton.png»] forState: UIControlUIControlStateHighlighted]; и изображение кнопки будет изменено при нажатии.

Ответ №3:

Устанавливаете ли вы состояние кнопки как selected в действии нажатия кнопки

 - (IBAction)buttonClicked:(id)sender;
{
UIButton *button = (UIButton *)sender;
if(button.tag == 0)// in your case
{
button.selected = YES;
}
// Do something
}
  

Надеюсь, это поможет

Комментарии:

1. Я думал, iOS позаботится об этом. У меня есть 3 кнопки, созданные в коде, поэтому, я думаю, я должен установить состояние других 2 на «выбрано = НЕТ» при нажатии на одну.

Ответ №4:

Код для настройки изображения выбранного состояния:

 [_button setImage:[UIImage imageNamed:@"whiteButton.png"] forState: UIControlStateHighlighted];
  

Код для настройки изображения нормального состояния:

 [_button setImage:[UIImage imageNamed:@"whiteButton.png"] forState: UIControlStateNormal];