У вас есть несколько проблем с вашим кодом:
Во-первых, img
- это локальная переменная внутри вашего обработчика крана, поэтому при каждом запуске этой функции она будет установлена на true
.
Во-вторых, ваш оператор if
фактически содержит присваивание (=
) вместо сравнения (==
), поэтому даже если img
еще не было true
, это было бы при выполнении if
заявление.
Все это означает, что ваше изображение всегда будет UnCheck.png
.
Вам необходимо использовать свойство вне функции, чтобы состояние отслеживалось правильно. img
также довольно плохое имя переменной, checked
или isChecked
, вероятно, лучше.
Тогда ваш метод-обработчик кнопок просто должен переключить это свойство и установить соответствующее изображение.
@property BOOL isChecked;
-(IBAction)show {
self.isChecked = !self.isChecked;
NSString *imageName = self.isChecked ? @"Check.png":@"UnCheck.png";
UIImage *img = [UIImage imageNamed:imageName];
[imageview setImage:img];
}