#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 … пройдите циклы и проверьте все условия, правильно ли настроены изображения.