Как я могу отключить несколько кнопок? - PullRequest
1 голос
/ 16 августа 2010

У меня есть 2 кнопки на моем виде, и я хочу отключить первую кнопку, когда я нажимаю на другую кнопку, и отключить вторую, когда я снова нажимаю на кнопку.

Я пробовал с этим кодом

if (button1.enable = NO) {
    button2.enable = NO;
}

Итак, у меня в NavigationBar есть кнопка «+» и 5 кнопок отключения на мой взгляд. Когда я нажимаю кнопку «+», я хочу включить первую кнопку, а когда я нажимаю снова, это включает вторую…
Спасибо

Ответы [ 3 ]

3 голосов
/ 16 августа 2010
if (button1.enabled == YES)
{
     button1.enabled = NO;
     button2.enabled = YES;
}
else (button2.enabled == YES)
{
     button2.enabled = NO;
     button1.enabled = YES;
}

Это то, что вы ищете?Это будет IBAction для другой кнопки.

0 голосов
/ 16 августа 2010

button1.enable = YES должно быть button1.enable == YES

лучше читаемая форма: [button1 isEnabled]

0 голосов
/ 16 августа 2010

Вы говорите

if (button1.enabled = NO) {

, когда вы, вероятно, имеете в виду

if (button1.enabled == NO) {

= - оператор присваивания, а == - оператор логического равенства.В данный момент вы назначаете YES для button1.enable, что, очевидно, включает button1.Затем, поскольку button.enable имеет значение true, элемент управления вводит условие if и включает button2.

РЕДАКТИРОВАТЬ: ответить на ваш новый вопрос («Когда я нажимаю кнопку« + », я хочу, чтобы первая кнопка и когдаЯ нажимаю еще раз, чтобы включить второе ... "), допустим, что вы где-то инициализируете состояния кнопок.В свой @interface добавьте переменную экземпляра

NSArray *buttons;

, чтобы объявление вашего интерфейса выглядело как

@interface YourViewController: UIViewController {
  IBOutlet UIButton *button1;
  IBOutlet UIButton *button2;
  IBOutlet UIButton *button3;
  IBOutlet UIButton *button4;
  IBOutlet UIButton *button5;
  NSArray *buttons;
}

, а затем инициализировало buttons примерно так:

-(void)viewDidLoad {
  [super viewDidLoad];
  buttons = [NSArray arrayWithObjects: button1, button2, button3, button4, button5, nil];
  [buttons retain];
  for (UIButton *each in buttons) {
    each.enabled = NO;
  }

-(void)viewDidUnload {
  [buttons release];
  [super viewDidUnload];
}

Допустим, вы подключили обработчик события Touch Up Inside к кнопке + к plusPressed:.Тогда у вас будет

-(IBAction)plusPressed: (id) button {
  for (UIButton *each in buttons) {
    if (!each.enabled) {
      each.enabled = YES;
      break;
    }
  }
}

Каждый раз, когда вызывается plusPressed:, будет включена следующая кнопка в массиве.(Я пишу выше, от компилятора; могут быть синтаксические ошибки.)

Вы также можете сделать buttons свойством.Я не сделал, потому что другие классы не имеют доступа к бизнесу buttons.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...