关闭for循环中的一系列视图[iPhone]

时间:2010-09-22 21:16:03

标签: iphone cocoa-touch loops uiview uikit

我需要关闭一系列视图,不要编写代码来逐一关闭它们。这是一个示例代码来说明我的意思:

//这是放置视图的方法。它在运行时的不同时间被调用:

- (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 :(得分:0)

我承认我正在快速猜测,但这会有效吗?

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

答案 1 :(得分:0)

以下内容将从self.view中删除所有 UIImageViews。请注意,可变数组是必需的,因为您无法修改正在迭代的数组(如在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)];