#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. Это отключило кнопки; но установка значения «ДА» не привела к их повторному включению.