IBOutletCollection UIButtons - изменение выбранного состояния кнопок

У меня проблема с несколькими кнопками UIB в представлении. Мне бы хотелось, чтобы кнопки выбирались индивидуально, с несколькими выбранными одновременно (например, 10 кнопок, с выбранными кнопками 1, 4, 5, 9).

В моем заголовке у меня есть свойство для IBOutletCollection:

@property (retain, nonatomic) IBOutletCollection(UIButton) NSMutableArray *buttonToStaySelected;

В моей реализации у меня есть IBAction:

-(IBAction)selectedButton:(id)sender{
  for (UIButton *b in self.buttonToStaySelected) {
     if (b.isSelected == 0){
        [b setSelected:YES];
  } else
        [b setSelected:NO];
  }
}

У меня возникает проблема, когда я выбираю любую из кнопок, связанных с коллекцией, все они меняются на выбранные. Я знаю, что проблема, скорее всего (почти наверняка), заключается в цикле, но каждое условие, которое я пытался оговорить, нарушает код и не оставляет ни одну из кнопок, способных "изменить" состояние.

ОБНОВЛЕНО

Чтобы их можно было выбирать, изменять состояние и отмечать несколько, я использовал это в качестве окончательного кода:

-(IBAction)selectedButton:(id)sender {
  for (UIButton *b in self.buttonToStaySelected) {
      if (sender == b) {
      [b setSelected:!b.isSelected];
    }
   }
  }

Спасибо за помощь!

1 ответ

Решение

selectButton: сообщение отправляется с аргументом, который определяет нажатую кнопку, но действие применяется ко всем кнопкам в коллекции, а не только к нажатой кнопке.

-(IBAction)selectedButton:(id)sender
{
  for (UIButton *b in self.buttonToStaySelected)
  {
     if (sender == b)
     {
        b.isSelected == !b.isSelected
     }
  }
}
Другие вопросы по тегам