iphone: не удается изменить фон кнопок

#iphone #uibutton #uicontrol

#iPhone #uibutton #uicontrol

Вопрос:

У меня возникла ситуация, когда я пытаюсь изменить фоновое изображение 4 кнопок следующим образом:

 if(some condition){
[firstSeverityButton setBackgroundImage:[UIImage imageNamed:@"greySeverity.jpg"] forState:UIControlStateDisabled]; 
[secondSeverityButton setBackgroundImage:[UIImage imageNamed:@"greySeverity.jpg"] forState:UIControlStateNormal];
[thirdSeverityButton setBackgroundImage:[UIImage imageNamed:@"greySeverity.jpg"] forState:UIControlStateNormal];
[fourthSeverityButton setBackgroundImage:[UIImage imageNamed:@"greySeverity.jpg"] forState:UIControlStateNormal]; 
[fifthSeverityButton setBackgroundImage:[UIImage imageNamed:@"redSeverity.png"] forState:UIControlStateNormal];
 }
  

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

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

1. Вы вызываете этот код одним и тем же методом для каждой кнопки или что-то в этомроде?

2. да, выполняется в том же блоке блока ‘if-else’

3. Вы уверены, что не меняете их случайно? Вы прошлись по своему коду в debug?

4. на начальном экране 5 серых кнопок, теперь предположим, что пользователь касается первой, ее фон должен измениться, и в следующий раз, если пользователь изменит 5-ю, все остальные должны вернуться к серому цвету, и только у пятой должен быть красный фон

Ответ №1:

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

 [firstSeverityButton setBackgroundImage:[UIImage imageNamed:@"greySeverity.jpg"] forState:UIControlStateDisabled]; 
  

Этот код на самом деле отлично работает с любым состоянием элемента управления. Я думаю, что проблема связана с исходным изображением кнопки и текущим состоянием кнопки (как в виде кончика, так и в коде).

Состояние кнопок можно изменить с помощью:

 button.enabled=yes;
button.highlighted = NO;
button.selected = NO;
  

Когда вы настраиваете изображение специально для состояния управления, изменение изображения отображается для этого конкретного состояния управления. Таким образом, изменение зависит как от исходного изображения, так и от текущего состояния управления кнопкой

ПРИМЕЧАНИЕ: Мы применяем изменения к фоновому изображению. Для кнопки есть свойство image, которое фактически может скрыть изменения фонового изображения. Если вы настроите изображение

 [firstSeverityButton setImage:[UIImage imageNamed:@"greySeverity.jpg"] forState:UIControlStateDisabled]; 
  

в любом месте кода и, возможно, это может скрыть ваши настройки фонового изображения.

Также существует вероятность ошибки в вашем цикле if-else … пройдите циклы и проверьте все условия, правильно ли настроены изображения.