У меня есть набор экземпляров классов, которые имеют переменную экземпляра BOOL с именем x.Когда кнопка нажата, мне нужно, чтобы для x было установлено значение NO для всех экземпляров, кроме экземпляра, связанного с кнопкой, которая запустила метод.Примерно так, как работает радио-кнопка.
Легко установить для всех экземпляров переменной x значение NO.Мне нужна помощь в определении того, как установить, например, cInstance.x в YES.myMethod будет использоваться многими различными кнопками, которые будут относиться к разным экземплярам.
Я могу написать его тремя отдельными методами, которые вызывают селекторы, однако это кричит о плохом программировании.
[myButtonA addTarget:self action:@selector(myMethodA:) forControlEvents:UIControlEventTouchUpInside];
[myButtonB addTarget:self action:@selector(myMethodB:) forControlEvents:UIControlEventTouchUpInside];
[myButtonC addTarget:self action:@selector(myMethodC:) forControlEvents:UIControlEventTouchUpInside];
- (void)myMethodA:(id)sender {
NSArray *objects = [NSArray arrayWithObjects:aInstance, bInstance, cInstance, dInstance, eInstance, nil];
int i = [objects count];
while (i--) {
MyClass *selectedInstance = [objects objectAtIndex:i];
selectedInstance.x = NO;
}
aInstance.x = YES;
}
- (void)myMethodB:(id)sender {
NSArray *objects = [NSArray arrayWithObjects:aInstance, bInstance, cInstance, dInstance, eInstance, nil];
int i = [objects count];
while (i--) {
MyClass *selectedInstance = [objects objectAtIndex:i];
selectedInstance.x = NO;
}
bInstance.x = YES;
}
- (void)myMethodC:(id)sender {
NSArray *objects = [NSArray arrayWithObjects:aInstance, bInstance, cInstance, dInstance, eInstance, nil];
int i = [objects count];
while (i--) {
MyClass *selectedInstance = [objects objectAtIndex:i];
selectedInstance.x = NO;
}
cInstance.x = YES;
}
Теперь я полагаю, что я мог бы создать новый метод для сброса всех переменных x в NO, а затем иметь отдельный метод для каждой кнопки, который устанавливает конкретную переменную в YES, однако для такого рода вещей требуется толькоИтого по методу.