У меня есть 2 набора UIButton
свойств (IBOutlet
из основной раскадровки, которые находятся в пользовательском заголовочном файле подкласса View Controller).
В комплекте 5 кнопок. В нескольких методах моего View Controller мне нужен доступ к
В viewDidLoad
у меня есть 2 NSMutableArray
массивов для 2 комплектов. Я addobject:(*UIButton)
пять раз за каждый комплект. В конце концов, это одна и та же строка кода, написанная 10 раз для каждой отдельной кнопки.
В нескольких методах моего View Controller мне нужен доступ к этим массивам. У меня есть массивы для того, чтобы сгенерировать индекс того, какая кнопка была нажата (индекс, который устанавливается в каждом методе нажатия кнопки IBAction
). Вместо того, чтобы выписывать 5 методов для кнопок, я пишу один.
В viewDidLoad
, есть ли отличный способ сконцентрировать 10 строк повторения в хороший цикл for, который может перечислять через каждую кнопку и добавлять эти данные в соответствующие NSMutableArray
?
Или я просто все это записываю?
Кроме того, основываясь на том, что я описал, является ли этот подход плохим решением для доступа и изменения нескольких кнопок одного и того же класса и назначения?
В Main Storyboard я решил присвоить каждой кнопке значение тега (0-4). Первый набор: кнопка 1 (0), кнопка 2 (1) ... и т. Д.
Второе: то же самое.
Это может работать только с методами взаимодействия кнопок (например, sender
может использоваться для доступа к тегу.) В viewDidLoad
такого взаимодействия пока не происходит.
Вот как это выглядит сейчас:
- (void)viewDidLoad
{
[super viewDidLoad];
self.dirBtns = [[NSMutableArray alloc] initWithCapacity:5];
[self.dirBtns addObject:self.salineDirBtn];
[self.dirBtns addObject:self.sampleDirBtn];
[self.dirBtns addObject:self.airDirBtn];
[self.dirBtns addObject:self.wasteDirBtn];
[self.dirBtns addObject:self.lowlossDirBtn];
self.runBtns = [[NSMutableArray alloc] initWithCapacity:5];
[self.runBtns addObject:self.salineRunBtn];
[self.runBtns addObject:self.sampleRunBtn];
[self.runBtns addObject:self.airRunBtn];
[self.runBtns addObject:self.wasteRunBtn];
[self.runBtns addObject:self.lowlossRunBtn];
// other stuff
}