我需要关闭一系列视图,不要编写代码来逐一关闭它们。这是一个示例代码来说明我的意思:
//这是放置视图的方法。它在运行时的不同时间被调用:
- (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'或更聪明的东西。会喜欢一个好的建议......
答案 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)];