Xcode 5.1 — Кнопка отключения / включения не работает?

#ios #objective-c #xcode #uibutton

#iOS #objective-c #xcode — код #уибуттон

Вопрос:

Приложение с 4 кнопками — просто хотите контролировать их поведение, т. Е. нажимаете кнопку, и она отключается, в то время как другие включены.

Из других вопросов / ответов здесь я создал следующие записи .h:

 @interface TestButtonsViewController : UIViewController
- (IBAction)b1:(id)sender;
- (IBAction)b2:(id)sender;
- (IBAction)b3:(id)sender;
- (IBAction)b4:(id)sender;

@property (retain, nonatomic) IBOutlet UIButton *b1;
@property (retain, nonatomic) IBOutlet UIButton *b2;
@property (retain, nonatomic) IBOutlet UIButton *b3;
@property (retain, nonatomic) IBOutlet UIButton *b4;
 

и тот.м

 - (IBAction)b1:(id)sender {

UIButton *b1 = (UIButton *) sender;
b1.enabled = NO;
UIButton *b2 = (UIButton *) sender;
b2.enabled = YES;
UIButton *b3 = (UIButton *) sender;
b3.enabled = NO;
UIButton *b4 = (UIButton *) sender;
b4.enabled = NO;
}

- (IBAction)b2:(id)sender {

UIButton *b1 = (UIButton *) sender;
b1.enabled = NO;
UIButton *b2 = (UIButton *) sender;
b2.enabled = NO;
UIButton *b3 = (UIButton *) sender;
b3.enabled = YES;
UIButton *b4 = (UIButton *) sender;
b4.enabled = NO;
}

- (IBAction)b3:(id)sender {

UIButton *b1 = (UIButton *) sender;
b1.enabled = NO;
UIButton *b2 = (UIButton *) sender;
b2.enabled = NO;
UIButton *b3 = (UIButton *) sender;
b3.enabled = NO;
UIButton *b4 = (UIButton *) sender;
b4.enabled = YES;
}

- (IBAction)b4:(id)sender {

UIButton *b1 = (UIButton *) sender;
b1.enabled = YES;
UIButton *b2 = (UIButton *) sender;
b2.enabled = YES;
UIButton *b3 = (UIButton *) sender;
b3.enabled = YES;
UIButton *b4 = (UIButton *) sender;
b4.enabled = NO;
}
 

Когда я сохраняю, создаю, запускаю и нажимаю кнопки, начиная с 1 и спускаясь вниз, кнопки 1 и 2 отключаются после того, как я их нажимаю; но когда я нажимаю 3, это не так; кроме того, когда я нажимаю 4, он не включает 1 и 2.

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

1. Почему вы создаете несколько переменных, на которые ссылаетесь sender ?! В вашем коде кнопки b1, b2, b3 и b4 одинаковые. Вы просто создаете новый указатель на тот же объект…

2. когда вы добавляете действие касания (Ctrl кнопка) — «отправитель» — это то, что он создает в файле .h — для ВСЕХ кнопок…

Ответ №1:

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

 - (IBAction)b1:(id)sender 
{
    self.b1.enabled = NO;
    self.b2.enabled = YES;
    self.b3.enabled = NO;
    self.b4.enabled = NO;
}

- (IBAction)b2:(id)sender 
{
    self.b1.enabled = NO;
    self.b2.enabled = NO;
    self.b3.enabled = YES;
    self.b4.enabled = NO;
}

- (IBAction)b3:(id)sender 
{
    self.b1.enabled = NO;
    self.b2.enabled = NO;
    self.b3.enabled = NO;
    self.b4.enabled = YES;
}

- (IBAction)b4:(id)sender 
{
    self.b1.enabled = YES;
    self.b2.enabled = YES;
    self.b3.enabled = YES;
    self.b4.enabled = NO;
}
 

Ответ №2:

То, что вы ищете, это Button.userInteractionEnabled = НЕТ

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

1. Это отключило кнопки; но установка значения «ДА» не привела к их повторному включению.