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 по кодированию для какао.

Другие вопросы по тегам