Использование executeSelector в цикле For?iPhone - PullRequest
0 голосов
/ 29 декабря 2011

У меня есть массив (называемый массив в коде ниже), который содержит несколько объектов MyView. Я пытаюсь перебрать эти объекты в цикле For и добавить их как подпредставление один за другим, каждый с задержкой в ​​одну секунду. Проблема с кодом ниже состоит в том, что все объекты добавляются сразу с задержкой в ​​одну секунду. Кто-нибудь может подсказать, как я могу исправить?

Заранее спасибо.

- (void)startMethod {

    for (MyView * myview in array) {

        [self performSelector:@selector(addSubView:) withObject:myview afterDelay:1];
    }
}

- (void)addSubView : (UIView *)view {
    [soundController playSound];
    [self.view addSubview:view];
}

Ответы [ 4 ]

1 голос
/ 29 декабря 2011

Время выполнения цикла недостаточно для задержки выполнения селекторов.Вы, вероятно, должны отложить себя, например, с помощью счетчика.

-(void)startMethod {
    NSUInteger i = 0;
    for (MyView * myview in array) {
        i += 1;
        [self performSelector:@selector(addSubView:)
                   withObject:myview
                   afterDelay:i];
    }
}
0 голосов
/ 29 декабря 2011

Простое решение: увеличить задержку на одну секунду после каждой итерации цикла.

0 голосов
/ 29 декабря 2011

На самом деле, все довольно просто:

- (void)startMethod {
    int seconds = 0;
    for (MyView * myview in array) {
        [self performSelector:@selector(addSubView:) withObject:myview afterDelay:++seconds];
    }
}
0 голосов
/ 29 декабря 2011
- (void)startMethod {

  int i = 1;
  for (MyView * myview in array) {
    [self performSelector:@selector(addSubView:) withObject:myview afterDelay:i];
    i++;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...