Закрыть серию просмотров в цикле [iPhone] - PullRequest
0 голосов
/ 23 сентября 2010

Мне нужно закрыть серию представлений и не писать код для их закрытия по одному. Вот пример кода, чтобы проиллюстрировать, что я имею в виду:

// Это метод размещения видов. Он вызывается в разное время во время выполнения:

- (void)addNotePic:(int)number {

int indexNumber = ((110*number) + 10);

UIImage *image = [UIImage imageNamed:@"Note.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage: image];
[image release];
imageView.frame = CGRectMake(10, indexNumber, 300, 100);
imageView.tag = 100 + number;
[self.view addSubview: imageView];
[self.view sendSubviewToBack: imageView];
[imageView release];

}

// И вот вопрос, часть, о которой я вас, ребята, спрашиваю. Это метод, который я хочу удалить все отображаемые виды одновременно.

    for (i = 0; i < 20; i++) {
    UIView *imageView = [self.view viewWithTag:100 + i];
    [imageView removeFromSuperview];
}

Я знаю, что это приводит к ошибкам, так как я пытаюсь переопределить imageView во второй раз, когда он зацикливается, но как я могу обойти это. Может быть что-то, чтобы переименовать имя «imageView» в «imageView + i» или что-то более умное. Очень хотелось бы хорошего предложения ...

Ответы [ 2 ]

0 голосов
/ 23 сентября 2010

Следующее удалит все UIImageViews из self.view.Обратите внимание, что изменяемый массив необходим, поскольку вы не можете изменить массив, который повторяется (как в цикле for)

NSMutableArray *removeThese = [NSMutableArray arrayWithCapacity:5];

for (UIView *view in self.view.subviews) {
 if([view isKindOfClass:[UIImageView class]]) {
  // [view removeFromSuperview]; <-- This will result in a runtime error
  [removeThese addObject:view];
 }
}

[removeThese makeObjectsPerformSelector:@selector(removeFromSuperview)];
0 голосов
/ 23 сентября 2010

Признаюсь, я быстро догадываюсь, но сработает ли это?

    for (i = 0; i < 20; i++) {
    [[self.view viewWithTag:100 + i] removeFromSuperview];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...