Создайте цикл, в котором вы создадите 50 кнопок и сохраните их в непостоянном массиве.
Перемешайте массив, лучше всего, поместив категорию в NSMutableArray и выбрав из нее первые 6 объектов.
Вы найдете категорию с несколькими удобными методами в моих arraytools
Отсутствует одна важная информация: как выглядят методы, которые должны вызывать кнопки?
Если у вас есть что-то обычное, например -pressedButton<No>:
, цикл for может выглядеть следующим образом:
создание и сохранение 50 кнопок
self.buttons = [NSMutableArray arrayWithCapacity:50]; //NSMutableArray
for (int i=0; i<50, i++)
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
action:@selector(NSSelectorFromString([NSString stringWithFormat:@"pressedButton%i:", i]))
forControlEvents:UIControlEventTouchDown];
[buttons addObject:button];
}
перемешать и выбрать 6 кнопок
[buttons shuffle]; // see arraytools
NSArray *sixButtons = [buttons objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0,6)]];
и, наконец, вычислите кадр для каждой кнопки в sixButtons
и добавьте его в назначенный вид [view addSubview:button];
Если у вас нет метода для каждой кнопки, вы можете различать кнопки по их индексам в массиве кнопок. Но будьте осторожны: в этом случае вы не должны перемешивать это. Вместо этого вы должны преобразовать его в неизменяемый массив
NSMutableArray *buttonsTemp = [NSMutableArray arrayWithCapacity:50];
for (int i=0; i<50, i++)
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
action:@selector(buttonPressed:)
forControlEvents:UIControlEventTouchDown];
[buttonsTemp addObject:button];
}
self.buttons = [NSArray arrayWithArray:buttonsTemp]; //Member of type NSArray
Теперь вы можете выбрать 6 кнопок случайным образом
NSSet *sixButtos = [buttons setWithRandomElementsSize:6];//see arraytools
-buttonPressed:
может быть таким:
-(void) buttonPressed:(UIButton *)sender
{
NSUInteger buttonIndex = [buttons indexOfObject:sender];
//Now you can use if or switch to distinguish, what needs to be done
}