iOS UIButton, setEnabled и button.hidden не работают
Я перепробовал все ответы, которые нашел на SO, так что либо у меня другая проблема, либо тепло попало в мой мозг.
В любом случае, у меня есть UIButton на раскадровке, он связан с IBAction с именем _cameraButtonPress (UIButton называется _cameraButton). Когда кнопка нажата, я хочу на время отключить ее, поэтому я немедленно вызываю [sender setEnabled:NO]; и это работает нормально. Однако в другой функции, которая сохраняет изображение, при успешном сохранении я использую [_cameraButton.setEnabled:YES]; Это не работает.
Если я заменю отправителя на _cameraButton в функции, вызываемой IBAction, это также не сработает. У меня есть UIButton, связанный с IBOutlet.
Я могу опубликовать код, но это довольно большой проект, вот некоторые важные моменты:
В шапке...
IBOutlet UIButton *_cameraButton;
IBAction...
- (IBAction) _cameraButtonPress:(id)sender {
[sender setEnabled:NO]; //stops button responding to touch events
Далее вниз в другой функции:
} else {
NSLog(@"colour image saved successfully");
[_cameraButton setEnabled:YES];
}
Есть идеи?
Благодарю.
2 ответа
Вы уверены, что подключили _cameraButton к UIButton
? Попробуйте войти в _cameraButton, чтобы увидеть, содержит ли он ссылку на действительный объект.
NSLog(@"%@", _cameraButton);
Ответ Павла - самая логичная проблема.
Кроме того, соглашение о подчеркивании используется для различения иваров и свойств. Таким образом, у вас будет свойство что-то вроде (для ARC):
@property (nonatomic, weak) IBOutlet UIButton *cameraButton;
И, если вам нужен ивар, ваш @synthesize
Заявление может быть:
@synthesize cameraButton = _cameraButton;
Вероятно, это менее актуально для кнопок, чем для других свойств, но хорошая практика предлагает подчеркивания для иваров, связанных с объявленными свойствами, а не для самих свойств.
См. Свойства именования и типы данных в Руководстве Apple по кодированию для какао.