每当我使用此代码显示一些subView时,每次都会创建clearImage,并且在10次执行后会有10个图像! 如何在 removeFromSuperview 之后删除此图片?
- (IBAction)nextTutorial:(id)sender {
UIImageView *clearImage = [[UIImageView alloc] initWithFrame:CGRectMake(270, 0, 50, 50)];
clearImage.image = [UIImage imageNamed:[settings objectAtIndex:7]];
UIImageView *helpImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
helpImage.image = [UIImage imageNamed:[settings objectAtIndex:8]];
UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(60, 7, 200, 30)];
slider.value = 0.5;
if (hintnumber == 1) {
self.hintLabel.text = [settings objectAtIndex:1];
[self.view addSubview:slider];
hintnumber = 2;
} else if (hintnumber == 2) {
self.hintLabel.text = [settings objectAtIndex:2];
[self.view addSubview:clearImage];
hintnumber = 3;
} else if (hintnumber == 3) {
self.hintLabel.text = [settings objectAtIndex:3];
[self.view addSubview:helpImage];
[self.nextButton setTitle:[settings objectAtIndex:5] forState:UIControlStateNormal];
hintnumber = 4;
} else if (hintnumber == 4) {
hintnumber = 1;
[slider removeFromSuperview];
[clearImage removeFromSuperview];
[helpImage removeFromSuperview];
slider = nil;
clearImage = nil;
helpImage = nil;
[self.view removeFromSuperview];
}
答案 0 :(得分:2)
根据新代码进行更新:
如果hintNumber为4,则表示您正在创建一个对象,从不将其添加到视图中,然后将其从不存在的视图中删除。您需要从其超级视图中删除先前添加的对象,并且不是您刚刚使用类似[[self.view viewWithTag:99] removeFromSuperview];
创建的那个,并在创建时将clearView的标记号设置为99.
另外,您应该只在需要时创建新对象。
答案 1 :(得分:1)
首先:从superview中删除
第二:将clearImage设置为nil;)
答案 2 :(得分:0)
在将clearImage设置为nil之前调用[clearImage removeFromSuperview]。 :)