【发布时间】:2010-09-22 21:16:02
【问题描述】:
我需要关闭一系列视图,并且不会编写代码来逐个关闭它们。这是一个示例代码来说明我的意思:
//这是放置视图的方法。它在运行时的不同时间被调用:
- (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”或更聪明的东西。希望有个好建议...
【问题讨论】:
-
您的问题不在于变量
imageView被重新定义,这是完全合法的。您是否在控制台中收到错误消息?您是否在调试器中逐步完成了此操作?它在做你认为的那样吗?错误来自哪一行?肯定有带有标签 100..119 的视图吗? -
-1。变量不是那样工作的。你的代码很好。
-
控制台消息是:程序接收信号:“EXC_BAD_ACCESS”。查了一下,内存管理不好。通过在创建后不释放视图来解决整个问题。不是最好的方法,但它现在可以解决它......
标签: iphone cocoa-touch loops uiview uikit