Изменить свойства кнопки с помощью цикла?Xcode - PullRequest
1 голос
/ 13 марта 2012

Мне бы хотелось, чтобы тон мог урезать эти строки:

[button0 addGestureRecognizer:longPress];
[button1 addGestureRecognizer:longPress];
[button2 addGestureRecognizer:longPress];
[button3 addGestureRecognizer:longPress];
[button4 addGestureRecognizer:longPress];
[button5 addGestureRecognizer:longPress];
[button6 addGestureRecognizer:longPress];
[button7 addGestureRecognizer:longPress];
[button8 addGestureRecognizer:longPress];
[button9 addGestureRecognizer:longPress];

и т. Д. Вплоть до 36 !!

Возможно с петлей?Но я не уверен, как это сделать.

Спасибо, С уважением.

Ответы [ 2 ]

6 голосов
/ 13 марта 2012

Вы можете назначить тег каждой кнопке и циклически переключать кнопки, используя метод viewWithTag.

for (int i = 0; i < 36; i++) {
    UIButton *button = [self.view viewWithTag:i];
    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
    [button addGestureRecognizer:longPress];
}

На следующем снимке экрана показано, как назначить тег для каждой кнопки в Интерфейсном Разработчике.

enter image description here

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

for (int i = 0; i < 36; i++) {
    NSString *key = [NSString stringWithFormat:@"button%d", i];
    UIButton *button = [self valueForKey:key];
    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
    [button addGestureRecognizer:longPress];
}
2 голосов
/ 13 марта 2012

Поместите свои кнопки в массив и используйте быстрое перечисление для их перебора.

NSArray *buttons = [NSArray arrayWithObjects:button0, button1, button2, button3, button4, button5, button6, button7, button8, button9, nil];

for (UIButton *button in buttons) {
    [button addGestureRecognizer:longPress];
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...