/ / Изберете специфичен UIButton с номера - ios, objective-c, uibutton

Изберете специфичен UIButton с номера - ios, objective-c, uibutton

Имам проект, който има 35 бутона:

    IBOutlet UIButton *button1;
IBOutlet UIButton *button2;
IBOutlet UIButton *button3;
...
IBOutlet UIButton *button35;

В моя случай създавам функция, която ще избере число от 0 до 35, и се опитвам да избера бутона според генерирания брой, както виждаме по-долу:

int x = arc4random() % 35;

button[x].layer.borderColor = [[UIColor darkGrayColor] CGColor];

Но кодът не работи, защото вярвам, че това не е начин да избера бутона, как мога да разреша този проблем и да избера бутона и да променя цвета на рамката?

Отговори:

1 за отговор № 1

Предлагам да присвоите последователни маркери на бутоните си, като започнете с определен фиш и след това с помощта на viewWithTag, за да извлечете бутоните, както е предложено в алтернативното предложение на DanielM.

#define K_TAG_BASE 100   //BUTTON TAGS START AT 100

int tag = arc4random() % 35 + K_TAG_BASE;

NSButton aButton = [self.view viewWithTag: tag];
aButton.layer.borderColor = [[UIColor darkGrayColor] CGColor];

1 за отговор № 2

Можете да зададете полето за тагове на всеки бутон и да потърсите бутона на базата на маркера:

int x = arc4random() % 35;
UIButton * desiredButton = (UIButton *)[self.view viewWithTag:x];
desiredButton.layer.borderColor = [[UIColor darkGrayColor] CGColor];

Можете също да използвате IBOutletCollection в тази ситуация, за да избегнете 35 дефиниции на бутони:

IBOutletCollection(UIButton) NSArray * _buttonsArray;

0 за отговор № 3

Тъй като ви виждам, че сте настроили бутоните с изводи, предлагам също да дефинирате IBOutletCollection собственост и използване, за да вземете произволен бутон (в колекциите за продажба поръчката не е гарантирана, но нямате нужда от нея за случайна селекция):

// In your class @interface
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttonsArray;

// In your class @implementation
-(void)selectRandomButton
{
NSInteger randomIndex = arc4random() % self.buttonsArray.count;
((UIButton *)self.buttonsArray[randomIndex]).layer.borderColor = [UIColor darkGrayColor].CGColor;
}